[javascript] DOMContentLoaded가 실행되었는지 감지하는 방법



Answers

이 이벤트가 발생하면 document.readyState 가 변경됩니다. readyState 값을 확인하면 이벤트가 시작되었는지 여부를 알 수 있습니다. 다음은 문서가 준비 될 때 start() 를 실행하는 코드입니다.

if (/comp|inter|loaded/.test(document.readyState)){
    // In case DOMContentLoaded was already fired, the document readyState will be one of "complete" or "interactive" or (nonstandard) "loaded".
    // The regexp above looks for all three states. A more readable regexp would be /complete|interactive|loaded/
    start();
}else{
    // In case DOMContentLoaded was not yet fired, use it to run the "start" function when document is read for it.
    document.addEventListener('DOMContentLoaded', start, false);
}
Question

나는 라이브러리를 개발하는 것을 도우려고 노력 중이며 페이지 로딩 작업을하고있다.
이 과정에서 나는 라이브러리를 defer와 async의 사용과 완전히 호환되도록 만들고 싶습니다.

내가 원하는 것은 간단하다.
파일이 실행될 때까지 DOMContentLoaded가 실행되었다는 것을 어떻게 알 수 있습니까?

왜 이렇게 어려운가요?
IE에서는 DOMContentLoaded 전에 document.readyState가 대화 형으로 표시됩니다.
어떤 식 으로든 브라우저 검색을 사용 하지 않을 것이며 , 그것은 나와 다른 정책의 정책에 위배됩니다.

올바른 대안은 무엇입니까?

편집하다:

내가 충분히 명확하지 않은 것 같아. 로드 이벤트가 이미 발생했는지는 알 필요가 없습니다. 나는 이미 그 문제를 해결하는 방법을 알고 있었다! DOMContentLoaded로 해결하는 방법을 알고 싶습니다 !!!




DOMContentLoaded가 실행되면 "정확히"알고 싶다면 다음과 같은 부울 플래그를 사용할 수 있습니다.

var loaded=false;
document.addEventListener('DOMContentLoaded',function(){
loaded=true;
...
}

다음을 확인하십시오 :

if(loaded) ...



Links