《JavaScript高级程序设计》(第三版)
DOMContentLoaded 事件对象不会提供任何额外的信息(其 target 属性是 document)。
IE9+、Firefox、Chrome、Safari 3.1+和 Opera 9+都支持 DOMContentLoaded 事件,通常这个事件
既可以添加事件处理程序,也可以执行其他 DOM 操作。这个事件始终都会在 load 事件之前触发。
对于不支持 DOMContentLoaded 的浏览器,我们建议在页面加载期间设置一个时间为 0 毫秒的超
时调用,如下面的例子所示。
setTimeout(function(){
//在此添加事件处理程序
}, 0);
这段代码的实际意思就是:“在当前 JavaScript 处理完成后立即运行这个函数。”在页面下载和构建
期间,只有一个 JavaScript 处理过程,因此超时调用会在该过程结束时立即触发。至于这个时间与
DOMContentLoaded 被触发的时间能否同步,主要还是取决于用户使用的浏览器和页面中的其他代码。
为了确保这个方法有效,必须将其作为页面中的第一个超时调用;即便如此,也还是无法保证在所有环
境中该超时调用一定会早于 load 事件被触发。
总结:
超时调用不是从解析到setTimeout()函数体后就开始计时,而是在"页面下载和构建完成",也即解析完<body>标签下面的JavaScript后才开始计时
本文介绍了DOMContentLoaded事件在现代浏览器中的支持情况,它总是在load事件之前触发。对于不支持此事件的老版本浏览器,推荐使用0毫秒超时调用来模拟。超时调用确保在页面下载和构建完成后执行,但不能保证先于load事件。
403

被折叠的 条评论
为什么被折叠?



