2011-04-18 4 views
31

가능한 중복 :
$(document).ready equivalent without jQueryjQuery를 사용할 수없는 경우 document.ready()를 확인하는 방법이 있습니까?

난 당신이 기능을 실행하기 위해 위해 window.onload 이벤트를 사용할 수 있습니다 알고 있지만,이 문서가 준비 경우 스크립트를 조회 할 수있는 방법입니다 안 그래?

는 < 몸 > 요소를 변경할 수 없습니다

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

같은

뭔가없이 jQuery를/다른 라이브러리. 여기

+0

모든 브라우저에서 작동하지만 방법에 대한 문서가 준비되었다 여부를 조회 할 수 있습니다. –

+0

@ Šime - ready는 문서가 준비되었는지 확인한 다음 이벤트가 바인딩되어 있으면 이벤트를 시작합니다. – justkt

+1

@justkt 처리기를 "ready"이벤트에 바인딩하는 것이 한 가지이며 문서 준비가되었는지 쿼리하는 것은 다른 일입니다. OP는 후자를하고 있으며, 다른 질문은 후자입니다. 그것들은 두 가지 다른 것들입니다. –

답변

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

+0

네, 대단한 대답입니다. 모든 주요 브라우저에서 작동합니다. 죄송합니다. 게시물이 늦었지만 여전히 묻고 싶습니다. 100ms 동안 setInterval을 수행해야하는 이유는 무엇입니까? 그것은 setInterval 객체없이 검사하지 않을 것입니다. –

+1

@Yegya'setInterval'은 문서가''complete''가 될 때까지 반복적으로 *를 100ms마다 확인합니다. –

-6

이 코드는 영업 이익이 준비 상당 검색되지 @justkt

if(window.attachEvent()){ 

    window.attachEvent("onload",load); 

}else{ 

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

} 

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

다시 말해서 준비 이벤트가 아니라로드입니다. 이들은 다릅니다. –

관련 문제