首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMContentLoaded事件不触发

DOMContentLoaded事件不触发
EN

Stack Overflow用户
提问于 2014-04-22 04:05:16
回答 1查看 1.4K关注 0票数 1

我想为IE尝试javascript的DOMContentLoaded事件。但这一事件并没有引发。这在IE上不支持吗。请帮个忙。我在谷歌上找不到多少帮助。我想在javascript而不是jquery中尝试这一点。请帮个忙。

EN

回答 1

Stack Overflow用户

发布于 2014-04-22 04:32:45

DOMContentLoaded在IE9和其他所有现代浏览器中都是受支持的。

使用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。首先触发的是文档安全查询和修改的最早时刻。

上述链接代码的关键在于以下逻辑:

代码语言:javascript
复制
        // 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);
        }

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

代码语言:javascript
复制
if (document.readyState === "complete") {

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23210176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档