我知道有一些方法可以在页面主体加载时获得通知(在加载所有图像和第 3 方资源之前触发 window.onload 事件),但每个浏览器都不同.
是否有在所有浏览器上执行此操作的明确方法?
据我所知:
DOMContentLoaded:在 Mozilla、Opera 9 和最新的 WebKit 上。这涉及向事件添加监听器:
document.addEventListener( "DOMContentLoaded", [初始化函数], false );
延迟脚本:在 IE 上,您可以发出带有 @defer 属性的 SCRIPT 标签,它只会在 BODY 标签结束后可靠地加载。
<轮询:在其他浏览器上,您可以继续轮询,但是否有标准的轮询对象,或者您是否需要在每个浏览器上做不同的事情?
我希望能够不使用 document.write 或外部文件。
这可以简单地通过 jQuery 完成:
$(document).ready(function() { ... })
但是,我正在编写一个 JS 库,不能指望 jQuery 总是在那里。
最佳答案
没有跨浏览器的方法来检查 DOM 何时准备就绪——这就是为什么像 jQuery 这样的库存在的原因,以抽象出令人讨厌的一点点不兼容性。
Mozilla、Opera 和现代 WebKit 支持 DOMContentLoaded
事件。 IE 和 Safari 需要奇怪的技巧,比如滚动窗口或检查样式表。血淋淋的细节包含在 jQuery 的 bindReady()
函数中。
关于javascript - 在页面 DOM 加载时收到通知(但在 window.onload 之前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65434/