我知道有一些方法可以在页面主体加载时通知(在所有图像和第三方资源加载之前触发window.onload事件),但每个浏览器都有所不同.
在所有浏览器上都有明确的方法吗?
到目前为止,我知道:
DOMContentLoaded:在Mozilla,Opera 9和最新的WebKits上.这涉及为事件添加一个监听器:
document.addEventListener("DOMContentLoaded",[init function],false);
延迟脚本:在IE上,您可以发出带有@defer属性的SCRIPT标记,该标记将在BODY标记关闭后可靠地加载.
轮询:在其他浏览器上,您可以继续轮询,但是甚至还有一个标准的东西要进行轮询,或者您是否需要在每个浏览器上执行不同的操作?
我希望能够不使用document.write或外部文件.
这可以通过jQuery简单地完成:
$(document).ready(function() { ... })
但是,我正在编写一个JS库,并且不能指望jQuery始终存在.
没有跨浏览器方法来检查DOM何时就绪 - 这就是为什么像jQuery这样的库存在,以抽象出令人讨厌的一些不兼容性.
Mozilla,Opera和现代WebKit支持此DOMContentLoaded
活动.IE和Safari需要奇怪的黑客,比如滚动窗口或检查样式表.血淋淋的细节包含在jQuery的bindReady()
功能中.