如何在文档readyState完成时触发事件

时间:2011-05-11 17:38:53

标签: javascript

我想在DOM完全加载时触发和事件。我检查了document.readyState,但这不是一个事件。我想在readyState完成后解雇它。我该怎么做?

4 个答案:

答案 0 :(得分:16)

一些简单的谷歌搜索指向我这个代码:

// alternative to DOMContentLoaded
document.onreadystatechange = function () {
    if (document.readyState == "complete") {
        initApplication();
    }
}

this link

答案 1 :(得分:2)

处理window.load event

只有在所有外部资源(包括图像)都已加载时才会触发。

答案 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的解决方案将实现相同的功能,而无需添加额外的依赖项。