Javascript DOMContentLoaded 事件未在 Internet Explorer 中触发

标签 javascript internet-explorer dom-events

我有以下代码将函数附加到 DOMContentLoaded 事件,但该函数从未在 Internet Explorer 11 中调用

代码:

if (document.addEventListener) {
   document.addEventListener("DOMContentLoaded", init, false);
}
else {
   document.attachEvent("onDOMContentLoaded", init);
}

最佳答案

它可能不会触发的原因有几个:

  1. 它已经触发(在您附加事件处理程序之前)而您错过了它。
  2. 您运行的是不支持 DOMContentLoaded 事件的旧版 IE。
  3. 在这些代码行之前存在某种脚本错误,因此这些代码行并未实际执行,因此事件处理程序从未真正注册过。
  4. 您正尝试在嵌入式 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/

相关文章:

javascript - 拖放功能不起作用

javascript - Onclick 事件有时不触发 (IE6/IE7/IE8)

javascript - 当我已有 onclick 事件时,如何添加按键事件?

javascript - Chrome 中的按键模拟正常触发,但不是正确的按键

javascript - AngularJS stateprovider View 模板

服务器响应后 XMLHttpRequest 的 javascript 加载响应

javascript - 将一个 jQuery Easing 插件动画分成两部分(左 + 右)?

javascript - 卡片翻转动画 Internet Explorer 11

javascript - 停止 onmouseenter 在 Chrome 和 Firefox 中重复触发

javascript - 页面可见性检测-不知道如何设置初始状态