2012-07-16 5 views
0

나는 그것을 이상하게 보이는 것을 알고 다음 코드 레이아웃자바 스크립트 SRC 로딩 순서

<script src="http://some.javascript/file.js"></script> // This should load first 
<script language="JavaScript"> 
    document.write('<SCR'+'IPT language="JavaScript1.1" SRC="http://a.link.to.an.external.url/that/returns/a/full/html/page/including/some/javascript">'); // This should load second 
    document.write('</SCR'+'IPT>'); 
</script> 

MyJavascriptFunctionThatDependsOnStuffLoadedFromThe.documentWritePage(); <!-- Those files above should have loaded before this call --> 

있습니다. HAS은 JS가로드되는 방식에 영향을 미치지 않는 이유로 보이게합니다. 웹킷 브라우저 만 있으면 작동 할 필요가 없습니다.

각 문서가 다음 문서로 완전히로드되는지 어떻게 확인합니까? 즉,이 문서들이 동 기적으로로드되어 최종적으로 함수 호출이 적절한 상태를 취할 수 있도록하는 방법은 무엇입니까?

+0

왜'document.write() '를 사용하고 있습니까? – Brad

+0

도대체 이것은 무엇입니까 ??? 'document.write (''); ' – coolguy

+0

* sigh *는 코드가 다음과 같이 표시되어야한다고 가정 해 봅시다. 나는 정말로 그것에 들어가기를 원하지 않는다. – user5243421

답변

1

자바 스크립트 파일은 순차적으로로드되어야하며, 사용자가 의존하는 스크립트가 이상한 일을하지 않는 한 다른 파일 다음에 application.js를로드하면됩니다.

도메인 간 스크립트는 사이트 자체의 스크립트 뒤에로드되므로 오류가 발생합니다.

는이 같은,이 이벤트에 뭔가를 당신의 js 파일을 이벤트 리스너를 추가하고로드 할 수 :

function addJavaScript(js, onload) { 
    var head, ref; 
    head = document.getElementsByTagName('head')[0]; 
    if (!head) { return; } 
    script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = js; 
    script.addEventListener("load", onload, false); 
    head.appendChild(script); 
} 
+0

Darren이 해결하려고했던 동기화 문제를 어떻게 해결할 수 있습니까? 이것은 분명히'document.write' 버전보다 나은 구문이지만, 근본적인 문제를 어떻게 다루는 지 보지 못합니다. –

0

나는 그렇게 지속적으로 크로스 브라우저를 할 수 있다고 생각하지 않습니다.

IE (적어도 많은 이전 버전)는 서버에서 인 순서로 스크립트 태그를 처리합니다. 다른 많은 브라우저에서는 으로 정한 순서로 처리합니다. 이것에 DOM에 동적으로 추가되는 것들은 누가 압니까? 나는 당신이 다음을 추가하기 전에 그 위치에 있음을 테스트하기 위해 일종의 래퍼를 추가하지 않는다면, 실행 순서를 제어 할 수 있다는 것에 대해서는 기대하지 않을 것이다.

단순히 이런 식으로해야한다면, 나는 정말로 무엇을 제안해야할지 모르겠다. 그러나 모듈 로더를 사용하도록 전환 할 수 있다면 모듈 로더가 많이 있습니다. 특히 보시길 바랍니다 AMD