DOMContentLoaded事件不会触发

时间:2014-04-22 04:05:16

标签: javascript windows windows-phone-8

我想为IE尝试javascript的DOMContentLoaded事件。但那件事并没有发生。这不支持IE。请帮忙。在谷歌上搜索我没有找到太多帮助。我想在javascript而不是jquery中尝试这个。请帮助。

1 个答案:

答案 0 :(得分:0)

IE9及更高版本以及所有其他现代浏览器都支持

DOMContentLoaded

使用onreadystatechange为早期版本的IE提供了解决方法。你可以在这里看到完整的跨浏览器,普通javascript内容加载检测功能:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it你可以按原样使用,也可以从代码中借用概念。

基本的想法是,您在现代浏览器中使用DOMContentLoaded,在旧版本的IE中使用onreadystatechange并回退到window onload。第一个触发的是文档可以安全查询和修改的最早时刻。

上述链接代码的关键是这个逻辑:

        // otherwise if we don't have event handlers installed, install them
        if (document.addEventListener) {
            // first choice is DOMContentLoaded event
            document.addEventListener("DOMContentLoaded", ready, false);
            // backup is window load event
            window.addEventListener("load", ready, false);
        } else {
            // must be IE
            document.attachEvent("onreadystatechange", readyStateChange);
            window.attachEvent("onload", ready);
        }

在文档准备就绪后,您也可能正在注册活动。如果是这种情况,您的事件处理程序将永远不会被调用,因为事件已经发生。您可以在安装事件处理程序之前检查文档状态,以查看它是否已经准备好,如下所示:

if (document.readyState === "complete") {

同样,这里显示了完整的逻辑:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it