script.readyState is undefined in IE11 & FF
script.readyState is undefined in IE11 & FF
我刚刚开发了一个动态脚本加载程序,它在IE9中运行良好,但在IE11和FF中都不正常。
这是我的代码:
function getResourceScript(filename)
{
var script = document.createElement('script');
script.setAttribute('src', mShuttlePath + "scripts/" + filename);
script.setAttribute('type', 'text/javascript');
script.setAttribute('language', 'javascript');
document.getElementsByTagName('head')[0].appendChild(script);
}
function documentLoadInit()
{
if (document.readyState == 'complete')
{
// check if all scripts are loaded
for (var n = 0; n < document.scripts.length; n++)
{
if (document.scripts[n].readyState != "complete" && document.scripts[n].readyState != "loaded")
{
setTimeout(documentLoadInit, 49);
return false;
}
}
Init();
}
else
{
setTimeout(documentLoadInit, 49);
}
}
getResourceScript("core/core.js");
getResourceScript("core/ajax.js");
这里的主要问题是,script.readyState在IE11中被删除了——我发现了很多!
但是如何替换呢?如何检查脚本何时加载/完成?
有什么想法吗?
来自MSDN:
注意:对于script元素,不再支持
readyState
。从Internet Explorer 11开始,使用onload
。有关信息,请参阅兼容性更改。
所以,不用检查readyState
,你可以使用这样的东西:
if (!script.addEventListener) {
//Old IE
script.attachEvent("onload", function(){
// script has loaded in IE 7 and 8 as well.
callBack();
});
}
else
{
script.addEventListener("load", function() {
// Script has loaded.
callBack();
});
}
此外,我非常确信您可以改进您的代码。CCD_ 4更适合这种情况。阅读一些关于如何使用dom事件的内容,如果您仍然存在兼容性问题,这里有一些您可以使用的内容:
function loadExtScript(src, test, callback) {
var s = document.createElement('script');
s.src = src;
document.body.appendChild(s);
var callbackTimer = setInterval(function() {
var call = false;
try {
call = test.call();
} catch (e) {}
if (call) {
clearInterval(callbackTimer);
callback.call();
}
}, 100);
}
函数将测试作为参数。既然你是应用程序的设计者,你就会知道什么是成功的测试。一旦这个测试为真,它就会执行回调。
实际上,我想您是在问文档在准备好之前是否已经准备好了。您需要设置一个状态更改侦听器,并在每次文档状态更改时进行检查。
document.onreadystatechange = function () {
if (document.readyState == "complete") {
initApplication();
}
}
阅读文档:https://developer.mozilla.org/en-US/docs/Web/API/document.readyState
相关文章:
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- FF视图源|脚本高亮显示为红色
- FF和Chromium中CSS样式按钮的外观差异
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 关于引入外部javascript文件的问题&css通过https
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 日期&时间脚本-ie vs ff
- Node.js的子进程套接字写入在Chrome&FF
- 在狩猎中缩放的图像&铬,但不在ff&歌剧
- javascript表单验证不适用于chrome&FF
- contenteditable DIV在FF&Chrome-如何隐藏它