我想在DOM完全加载时触发和事件。我检查了document.readyState
,但这不是一个事件。我想在readyState
完成后解雇它。我该怎么做?
答案 0 :(得分:16)
一些简单的谷歌搜索指向我这个代码:
// alternative to DOMContentLoaded
document.onreadystatechange = function () {
if (document.readyState == "complete") {
initApplication();
}
}
答案 1 :(得分:2)
只有在所有外部资源(包括图像)都已加载时才会触发。
答案 2 :(得分:-1)
从另一篇文章中获取,你可以这样做:
var alreadyrunflag=0 //flag to indicate whether target function has already been run
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", function(){alreadyrunflag=1; walkmydog()}, false)
else if (document.all && !window.opera){
document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
var contentloadtag=document.getElementById("contentloadtag")
contentloadtag.onreadystatechange=function(){
if (this.readyState=="complete"){
alreadyrunflag=1
// perform what you need to
}
}
}
window.onload=function(){
setTimeout("if (!alreadyrunflag) doYourStuff()", 0)
}
这会检查DOM是否已完全加载,但如果不是,则会回退到onLoad
。你可以明显地操纵它。
此外,如果JQuery是一个选项,只需使用一个简单的函数就可以达到同样的效果:
$(document).ready(function() {
// Handler for .ready() called.
});
答案 3 :(得分:-5)
对于已经使用jQuery库的任何人,可以使用ready函数来处理这个问题。
否则@Neal的解决方案将实现相同的功能,而无需添加额外的依赖项。