IE 7&8不会加载脚本
IE 7 & 8 wont load script
我正在使用以下代码为我的小部件加载所需的JS库:
function loadScrip(url, callback) {
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState) { //IE
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScrip("http://code.jquery.com/jquery-1.8.3.js", function () {
loadScrip("http://code.jquery.com/ui/1.9.2/jquery-ui.js", function () {
alert("Loaded");
js13 = jQuery.noConflict(true);
main();
});
});
这在所有浏览器和IE9中都能很好地工作。
但在IE 7&8由于某种原因,jquery-ui.js无法加载,我得到错误:
Line: 563
Character: 4
Code: 0
Error Message: Object doesn't support this property or method
URL: http://code.jquery.com/jquery-1.8.3.js
有什么办法解决这个问题吗?我的头撞到墙上这个问题
完全跨浏览器测试的脚本:
var CFLoad = {
fScript : null,
isFileReady : function ( v ) {
return ( ! v || v == "loaded" || v == "complete" || v == "uninitialized" );
},
js : function(src,cb,attrs) {
var s = document.createElement( "script" ),
done = !1, i;
s.src = src;
s.type = "text/javascript";
for ( i in attrs ) {
s.setAttribute( i, attrs[ i ] );
}
s.onreadystatechange = s.onload = function () {
if ( ! done && CFLoad.isFileReady( s.readyState ) ) {
done = !0;
if(cb) cb(s);
s.onload = s.onreadystatechange = null;
}
};
window.setTimeout(function() {
if( !done) {
done = !0;
if(cb) cb(s,1);
}
}, 5000);
if(this.fScript===null) this.init();
this.fScript.parentNode.insertBefore( s, this.fScript );
},
css : function(href,cb,attrs) {
var l = document.createElement("link"),i;
l.href = href;
l.rel = "stylesheet";
l.type = "text/css";
for ( i in attrs ) {
l.setAttribute( i, attrs[i]);
}
if(this.fScript===null) this.init();
this.fScript.parentNode.insertBefore(l,this.fScript);
if(cb) window.setTimeout(cb, 0);
},
init : function() {
this.fScript = document.getElementsByTagName( "script" )[ 0 ];
}
};
用法
CFLoad.js("http://code.jquery.com/jquery-1.8.3.js", function (script_tag, failed) {
if(!failed) {
CFLoad.js("http://code.jquery.com/ui/1.9.2/jquery-ui.js", function(s, f) {
if(!f) {
alert("Loaded");
js13 = jQuery.noConflict(true);
main();
}
})
}
});
相关文章:
- Google Adsense多次加载脚本
- 如何准确执行加载脚本&退出弹出窗口
- RequireJ无法随机加载脚本
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 在以前的文件夹中加载脚本
- 如何重新加载脚本标记
- 正在脚本中加载脚本
- 在pjax完成其工作时加载脚本
- I'我用setTimeout加载脚本,你能找到一个更快的方法吗
- 在页面模板上加载脚本
- 如何在我的情况下创建加载脚本
- 当用$.getScript()加载脚本时,有一种方法可以从用$.get script()装载的脚本中调用父脚本中的函数
- 延迟加载 脚本加载和/或执行
- 如何使用谷歌页面速度CSS加载脚本延迟多个CSS文件
- 最后加载脚本
- 如何基于HTML中的类加载脚本
- 在局部视图中加载脚本文件
- 如何防止在使用hapi.js reply().hold()时重新加载脚本
- 异步加载脚本
- 脚本加载脚本广告