2011-04-18 29 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

相關問題