동적 페이지로드를 사용하여 초기 페이지로드 시간을 줄입니다. 스크립트에 의해 정의 된 함수와 객체가 액세스 가능하도록 스크립트가 완전히로드되었는지 확인해야합니다.script.readyState가 동적 스크립트로드 종료를 감지하도록 신뢰할 수 있습니까?
나는이 목적으로 my own Javascript library을 개발 했으므로이 주제에 대한 많은 연구를 수행하여 다른 라이브러리에서 어떻게 수행되는지 연구했습니다.
이 LABjs (그리고 다른 많은 로더) 알고, 모든 스크립트 요소 "온로드"모두와 "을 onreadystatechange" 설정 :이 문제와 관련된 논의 중에 는 카일 심슨, LABjs의 저자는 밝혔다
012 : 것을// Attach handlers for all browsers script.onload = script.onreadystatechange = function(){ if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { done = true; success(); complete(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; head.removeChild(script); } };
당신은 the current version of jQuery as of this writing, v1.3.2이의 예를 찾을 수 있습니다 ... 일부 브라우저를 발사하며, 일부 은 다른 발사합니다
이것은 최신 기술이지만 Opera 9.64의 이상한 동작을 분석하는 동안이 기술을 사용하면 onload 콜백이 너무 일찍 시작된다는 결론에 도달했습니다.
이 질문에 대한 답변으로 내 자신의 연구 결과를 게시하고 커뮤니티에서 더 많은 증거와 의견을 수집하고자합니다.
누구나 jQuery 1.x-master 분기에서 현재 코드를 찾습니다. 그들은'.onreadystatechange'와'.onload'를 사용하지 않고 약속들로 대체 한 것처럼 보입니다. [Clicky] (https://github.com/jquery/jquery/blob/1.x-master/src/ajax.js) – Campbeln