Internet Explorer中未触发Javascript DOMContentLoaded事件
我有以下代码将函数附加到Internet Explorer中未触发Javascript DOMContentLoaded事件,javascript,internet-explorer,dom-events,Javascript,Internet Explorer,Dom Events,我有以下代码将函数附加到DOMContentLoaded事件,但在Internet Explorer 11中从未调用该函数 代码: if (document.addEventListener) { document.addEventListener("DOMContentLoaded", init, false); } else { document.attachEvent("onDOMContentLoaded", init); } 它可能不会开火有几个原因: 它已经启动(在您附
DOMContentLoaded
事件,但在Internet Explorer 11中从未调用该函数
代码:
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
else {
document.attachEvent("onDOMContentLoaded", init);
}
它可能不会开火有几个原因:
DOMContentLoaded
事件的旧版本IEattachEvent
,IE不支持DOMContentLoaded
,因此您的else分支无法工作。在那些旧版本的IE中,您必须使用不同的检测方法
您可以在此处看到一个经过良好测试的跨浏览器纯javascript函数,用于在文档准备就绪时获得通知:。要使用一个可行的示例对此进行分解,请参见下文。我发现的问题是,
DOMContentLoaded
不会为javascript
触发,除非事件是在文档本身内联创建的
一个简单的解决方案是在文档readyState
中添加一个检查。如果仍在加载-创建事件,因为可以触发DOMContentLoaded
,否则只需立即加载,因为DOM已准备就绪
var load = function () {
console.log('I will always load, woohoo');
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', load); // Document still loading so DomContentLoaded can still fire :)
} else {
load();
}
您能指定您调用此代码的位置、加载文档时的任何位置或单击按钮!??请创建一个JSFIDLE,以便我们能够更好地提供帮助。