다음과 같습니다
< html>
IE9/10은 스크립트 요소의 onload 및 onreadystatechange 이벤트를 모두 지원합니다. ;/제목>
결과: IE6/7 /8: 팝업 2
IE9/10: 팝업 2, 1
Firefox/Safari/Chrome/Opera: 팝업 1
테스트 결과 IE9에서 스크립트 온로드 이벤트 지원이 시작된 것으로 나타났습니다. . 우리는 항상 위의 두 가지 이벤트를 사용하여 js 파일이 로드되었는지 확인했습니다. IE에서는 onreadystatechange 이벤트가 사용되며, 로딩 완료 여부를 판단하기 위해 이벤트 핸들러에서 ReadyState 값이 사용된다는 사실은 오래전부터 알고 있었습니다. 다른 브라우저에서는 onload 이벤트를 사용합니다.
if(isIE){
script .onreadystatechange = function(){
if(this.readyState == 'loaded' || this.readyState == 'complete'){
callback()>}
}
}else{
script.onload = function(){
callback();
}
}
현재 이 작성 방법에는 문제가 없습니다. 다만, 다음과 같이 작성하면 IE9/10
if(!this.readyState || this.readyState == "로드됨" || this.readyState == "완료" ){
callback();
}
}
이 작성 방법의 비결은 onload와 onreadystatechage가 모두 동일한 기능을 사용한다는 것입니다. Firefox/Safari/Chrome/Opera , 그리고 ReadyState 속성이 없으므로 !this.readyState 는 이러한 브라우저용입니다. ReadyState는 IE 브라우저용입니다. 로딩이 완료되면 캐싱이 완료될 수 있습니다. 그러니 두 개가 더 작을 수는 없습니다. 그러나 IE9/10은 이미 onload 이벤트를 지원하므로 콜백이 두 번 실행됩니다.
관련:
http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1
http://www.w3.org/TR/html5/scripting-1.html#script
https://developer.mozilla.org/En/HTML/Element/Script