fix #1242: session.setMode() doesn't always work in IE10

makes net.loadScript to work same way as jQuery.getScript
This commit is contained in:
nightwing 2013-02-23 14:04:55 +04:00
commit d783a77bc9
2 changed files with 17 additions and 11 deletions

View file

@ -33,6 +33,12 @@ define(function(require, exports, module) {
var XHTML_NS = "http://www.w3.org/1999/xhtml"; var XHTML_NS = "http://www.w3.org/1999/xhtml";
exports.getDocumentHead = function(doc) {
if (!doc)
doc = document;
return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
}
exports.createElement = function(tag, ns) { exports.createElement = function(tag, ns) {
return document.createElementNS ? return document.createElementNS ?
document.createElementNS(ns || XHTML_NS, tag) : document.createElementNS(ns || XHTML_NS, tag) :
@ -134,8 +140,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
if (id) if (id)
style.id = id; style.id = id;
var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; exports.getDocumentHead(doc).appendChild(style);
head.appendChild(style);
} }
}; };
@ -147,8 +152,7 @@ exports.importCssStylsheet = function(uri, doc) {
link.rel = 'stylesheet'; link.rel = 'stylesheet';
link.href = uri; link.href = uri;
var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; exports.getDocumentHead(doc).appendChild(link);
head.appendChild(link);
} }
}; };

View file

@ -7,6 +7,7 @@
*/ */
define(function(require, exports, module) { define(function(require, exports, module) {
"use strict"; "use strict";
var dom = require("./dom");
exports.get = function (url, callback) { exports.get = function (url, callback) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
@ -22,18 +23,19 @@ exports.get = function (url, callback) {
}; };
exports.loadScript = function(path, callback) { exports.loadScript = function(path, callback) {
var head = document.head || document.getElementsByTagName('head')[0]; var head = dom.getDocumentHead();
var s = document.createElement('script'); var s = document.createElement('script');
s.src = path; s.src = path;
head.appendChild(s); head.appendChild(s);
if (s.onload !== undefined) s.onload = s.onreadystatechange = function(_, isAbort) {
s.onload = callback; if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") {
else s = s.onload = s.onreadystatechange = null;
s.onreadystatechange = function () { if (!isAbort)
this.readyState == 'loaded' && callback(); callback();
}; }
};
}; };
}); });