我有以下代码将函数附加到 DOMContentLoaded
事件,但该函数从未在 Internet Explorer 11 中调用
代码:
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
else {
document.attachEvent("onDOMContentLoaded", init);
}
最佳答案
它可能不会触发的原因有几个:
- 它已经触发(在您附加事件处理程序之前)而您错过了它。
- 您运行的是不支持
DOMContentLoaded
事件的旧版 IE。 - 在这些代码行之前存在某种脚本错误,因此这些代码行并未实际执行,因此事件处理程序从未真正注册过。
- 您正尝试在嵌入式 iFrame 上执行此操作,并且可能没有适合 iFrame 的正确文档(某些浏览器可以在加载外部源时切换文档)。
要检查脚本错误,您应该在 IE 中打开调试控制台(按 F12)并查看控制台以查看是否报告了任何脚本错误。
您可以检查 document.readyState === "complete"
是否已经触发。
并且,在 IE9 之前的 IE 版本中,您需要 attachEvent
,IE 不支持 DOMContentLoaded
,因此您的 else 分支将无法工作。您将不得不在那些旧版本的 IE 中使用不同的检测方法。
您可以在此处看到一个经过良好测试的跨浏览器纯 javascript 函数,用于在文档准备就绪时收到通知:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it .
关于Javascript DOMContentLoaded 事件未在 Internet Explorer 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24904010/