繁体   English   中英

DOMContentLoaded事件不会触发

[英]DOMContentLoaded event does not fire

我想尝试IE的javascript的DOMContentLoaded事件。 但是该事件不会触发。 IE不支持此功能吗? 请对此提供帮助。 谷歌搜索后,我没有找到太多帮助。 我想尝试使用javascript而不是jquery。 请对此提供帮助。

IE9及更高版本和所有其他现代浏览器均支持DOMContentLoaded

对于使用onreadystatechange的IE早期版本,有一些变通办法。 您可以在此处看到完整的跨浏览器,简单的javascript内容加载检测功能: 纯JavaScript等效于jQuery的$ .ready()如何在页面/ dom准备就绪时调用函数 ,您可以按原样使用,也可以可以从代码中借用概念。

基本思想是,在现代浏览器中使用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") {

同样,这里显示了完整的逻辑: 纯JavaScript等效于jQuery的$ .ready()如何在页面/ dom准备就绪时调用函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM