2012-08-02 2 views
1

나는이 작업을 수행하는 스크립트와 우연히 발견 해요 : X와 나는 기능이화재 domContentLoaded 수동으로

"complete" === document.readyState ? setTimeout(I, 1) : document.addEventListener ? (document.addEventListener("DOMContentLoaded", X, h), window.addEventListener("load", X, h)) : window.attachEvent ? window.attachEvent("onload", X) : console.log("No available event.") 

및 시간은 false입니다.

무엇이 있나요?

답변

0

브라우저 간 방식으로 DOM의로드 된 상태를 감지하는 코드 덩어리 인 것처럼 보입니다.

브라우저가 DOMContentLoaded를 지원하지 않으면 다시 창로드 이벤트를 사용합니다.

DOM을 조작 할 수있게되면 (예 : 페이지가 렌더링 된 후) 코드를 초기화하는 데 사용됩니다.

3

아마 당신은 더 나은이 방법을 이해합니다

if("complete" === document.readyState){ 
    setTimeout(I, 1); 
}else{ 
    if(document.addEventListener){ 
     document.addEventListener("DOMContentLoaded", X, h), 
     window.addEventListener("load", X, h)); 
    }else{ 
     if(window.attachEvent){ 
      window.attachEvent("onload", X); 
     }else{ 
      console.log("No available event."); 
     } 
    } 
} 

이 수행합니다

  1. 확인을 문서가있는 경우, 기능 I 1 MS
  2. 후라고
  3. 를로드하는 경우
  4. 그렇지 않으면 브라우저가 지원하는지 확인합니다 addEventListener
  5. If DOM을로드 할 때이 지원됩니다 그렇지 않은 경우 DOM이로드 될 때, 기능 X은이 지원되는 경우 브라우저가 attachEvent
  6. 을 지원하는 경우는 검사,
  7. (DOMContentLoaded 또는 load 이벤트를 통해) 호출됩니다 그렇지 않은 경우, 함수 X는
  8. (load 이벤트를 통해) 호출됩니다, 그것은 브라우저가 addEventListener

attachEvent 나는 기능 X에 액세스하거나 DOM을 수정하는 생각 때문에 지원하지 않는 것을 말한다 대본 대본 e는 X을 호출하기 전에 DOM이 완전히로드되었는지 확인합니다.