在a previous question中,我了解到我的JavaScript中有关在DOMIady事件被触发之前在BODY元素上使用appendChild的错误。
我能够通过将我的代码包装在window.onload事件中来解决这个问题。读到这一点,我了解到window.onload只支持一个监听器,我无法保证我不会破坏其他人的监听器,或者其他人的监听器不会破坏我的监听器。
查看$(document).ready(function(){});
的来源,我意识到这种语法的简单性可能有很多。
在没有使用jQuery或其他JS库的情况下,我有没有通用的方法等待DOMReady事件?虽然这似乎可以解决问题,但我宁愿不依赖第三方库来使我的代码正常工作。
答案 0 :(得分:5)
您可以执行以下操作:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
/* more code to run on page load */
});
使用附加功能将现有onload
包装在新函数中。这取自http://www.webreference.com/programming/javascript/onloads/
然而,对于在文档准备就绪而不是onload (不同的事情,onload就是当所有内容都已下载时,文档被加载时已经准备好了)看看这个问题:$(document).ready equivalent without jQuery
答案 1 :(得分:1)
您可以使用:
document.onpageshow= new function() {
//(Code here)
}
您还可以将“onpageshow”替换为“onload”以获得更好的兼容性。
这也可能有用: https://developer.mozilla.org/en/DOM/element.addEventListener