Jquery를 비롯하여 많은 플러그인이 포함 된 두 개의 JS 파일을로드 중입니다. 'ready()'JQuery 함수는 두 번째 파일에있다.JQuery가로드되기 전에 Jquery 'ready()'가 지연됩니다.
코드 :
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src ='<%= deferJsAll %>';
document.body.appendChild(element);
// second JS file load with isReady goes here
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
나는 또한 두 번째 파일을로드 할 때 (코드 내 주석 참조) 볼 수 있습니다.
문제는 내가 실행 순서를 제어 할 수 없기 때문에 JQuery가로드되기 전에 'ready()'가 실행되고 오류가 발생합니다. 지연로드를 사용하고 Jquery 파일이 먼저로드 된 다음 두 번째 파일 (ready() 함수가있는 파일)이 실행되는지 확인하는 옵션이 있습니까?
"< % = deferJsAll %>"나는 CDN, gzip 또는 일반 텍스트 JS 파일에서 어떤 파일을 제공할지 결정하기 때문에 사용하고 있습니다.
진행 : 그냥 퍼팅에 대해 생각 :
var elementApp = document.createElement("script");
elementApp.src = 'js/app.js';
document.body.appendChild(elementApp);
을 첫 번째 문서의 끝에서. 따라서 첫 번째 문서의로드가 완료되면 두 번째 종속 JS 코드가 문서 본문에 포함됩니다. 좋은 생각이라고 생각하세요?
뭔가가로드 될 때 적절한 콜백이 없을 때이 솔루션이 훌륭하다고 확신합니다. 이것은 OP의 예제 코드에서 실제로 필요하지 않은 "무차별 대항"방법입니다. 언제, 무엇이로드되고 (미친 & 버그가있는 소셜 미디어 쓰레기) 제어하고 있기 때문에, 우리는 onload와 같은 브라우저에 내장 된 방법을 사용할 수 있습니다. –
음,'$ (document) .ready (...)'를 콜백으로 사용할 수 있습니다. 그렇지 않으면 Require.js를 사용하는 것이 좋습니다. –
+1 for requireJS. 하나 이상의 파일을 비동기 적으로로드하는 시점에 이르면 필 요하다고 생각합니다. 지금까지 $ doc.ready가가는 한, 나는 여기에 적용되는지 모르겠습니다. 것은 $ doc.ready가 jQuery가 준비되었을 때가 아니라 DOM이 완료되었을 때를 탐지하는 것입니다. jQuery가 존재하기 전에는 호출 할 수 없습니다. –