2011-04-18 26 views
31

可能重复:
$(document).ready equivalent without jQuery如果jQuery不可用,有没有办法检查document.ready()?

我知道你可以使用window.onload事件作出功能运行,但有一个脚本来查询,如果该文件已经准备好办法或不?

喜欢的东西

function update() 
{ 
    if(!document.ready()) // don't do unless document loaded 
     return ; 
} 
window.setInterval('update();', 100) ; 

无法更改<体>元素,并没有jQuery的/其他库。

+0

@justkt的OP不是寻找一个现成的等价物,但对于一个方法来查询该文档是否已准备就绪。 – 2011-04-18 18:16:11

+0

@Šime - ready会检查文档是否已准备就绪,然后在事件绑定时触发事件。 – justkt 2011-04-18 18:18:39

+1

@justkt将处理程序绑定到“就绪”事件是一回事,并且查询文档是否准备就绪是另一回事。 OP在做后者,而前者则是其他问题。这是两回事。 – 2011-04-18 18:33:40

回答

65

在这里你去:

var tid = setInterval(function() { 
    if (document.readyState !== 'complete') return; 
    clearInterval(tid);  
    // do your work 
}, 100); 

阅读有关document.readyState财产here。我不确定是否所有当前的浏览器都实现它。

+7

__Grrrrreat答案!! __经过测试的Chrome,IE6,7和9,Firefox 4,Opera 11它的工作原理。 – bobobobo 2011-04-18 21:23:15

+0

确实很棒。适用于所有主流浏览器。对不起,该帖子已经晚了,但还是要问, 为什么需要setInterval 100ms?它不会检查没有setInterval对象。 – 2015-03-03 05:48:37

+1

@Yegya'setInterval'确保我们每隔100ms反复*检查一次,直到文档变得“完整”。 – 2015-03-03 05:51:06

-6

此代码将在所有的浏览器

if(window.attachEvent()){ 

    window.attachEvent("onload",load); 

}else{ 

    window.addEventListener("load",load,true); 

} 

function load(){ 
    //Code to execute when the document is loaded. 
} 
+2

这也是负载,而不是就绪事件。这些不同。 – 2012-09-28 08:21:48

相关问题