Javascript DOMContentLoaded事件未在Internet Explorer中触发

Ced*_*use 9 javascript internet-explorer javascript-events

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

码:

if (document.addEventListener) {
   document.addEventListener("DOMContentLoaded", init, false);
}
else {
   document.attachEvent("onDOMContentLoaded", init);
}
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 11

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

  1. 它已经解雇了(在您附加事件处理程序之前)并且您错过了它.
  2. 您正在运行不支持该DOMContentLoaded事件的旧版IE .
  3. 在这些代码行之前存在某种脚本错误,因此这些代码行实际上并未执行,因此事件处理程序从未实际注册过.
  4. 您试图在嵌入式iFrame上执行此操作,并且可能没有iFrame的正确文档(某些浏览器可以在加载外部源时切换文档).

要检查脚本错误,您应该在IE中打开调试控制台(按F12)并查看控制台以查看是否报告了任何脚本错误.

您可以检查document.readyState === "complete"是否已经解雇.

并且,在IE9之前的IE版本中attachEvent,IE不支持,DOMContentLoaded因此你的其他分支不起作用.您必须在那些旧版本的IE中使用不同的检测方法.

你可以看到一个经过良好测试的,跨浏览器的普通javascript函数,以便在文档准备就绪时获得通知:纯JavaScript等同于jQuery的$ .ready()如何在页面/ dom准备就绪时调用函数.