我继承了这段代码,它似乎不是最优的,而且可能不正确,因为它在窗口和文档对象上添加了事件监听器。但是,除黑莓5.0外,它都可以正常工作。有人可以解释一下所有这些设置是否正确,或者是否有任何建议可以使其更好和/或更简化?
if (document.readyState === "complete")
callback();
else if (document.addEventListener)
{
document.addEventListener("DOMContentLoaded",callback,false);
window.addEventListener("load",callback,false);
}
else if(window.attachEvent)
{
document.attachEvent("onreadystatechange", callback);
window.attachEvent("onLoad",callback);
} else
setTimeout(callback,2000);
最佳答案
如果您想知道它是如何完成的或了解实现它的方法。我建议您看看迭戈·佩里尼 (Diego Perini) 的作品。他的工作和方法被用于许多 DOM 库,包括 jQuery。不幸的是,这家伙似乎没有得到太多的信任。他是 try/catch 轮询方法的先驱者,这使得当 IE 加入其中时跨浏览器 dom 加载事件成为可能。
https://github.com/dperini/ContentLoaded/blob/master/src/contentloaded.js
关于javascript - 跨浏览器 Dom 就绪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902280/