2013-02-04 2 views
0

내 클라이언트의 웹 사이트에 core.js 파일로이 스크립트를 만들었습니다. 해당 core.js 파일에서 몇 가지 자바 스크립트 라이브러리를 동적으로로드하려고합니다. 그러나 javacript 라이브러리를 사용하려면 해당 라이브러리 을 먼저으로로드 한 다음 나머지 스크립트를 사용해야합니다. 라이브러리 객체를 호출하기 전에 doh를 정의해야하기 때문입니다. 그래서 파일을 동적으로로드하는 아주 간단한 스크립트가 있지만, 우선 core.js 파일보다 먼저로드하는 방법이 있는지 알고 싶습니다. 여기에 현재 스크립트는 다음과 같습니다JavaScript의 특정 줄에 파일을 동적으로로드하는 방법은 무엇입니까?

물론

, 앞서 코어 파일의 동적 파일을로드 할거야,하지만 난 궁금했다 :

(function() { 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", "http://modernizr.com/downloads/modernizr-latest.js"); 
    if(typeof script != "undefined") { 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } 
})(); 

그리고 디버거에서

, 당신은 참조 modernizr 파일을로드 할 문서의 행을 지정하는 방법이 있습니까? 그렇지 않으면, 비록 내가 그것을로드했습니다, 나는 Modernizr를 사용할 수 없습니다.

당연히 jQuery를로드 할 수 있기 때문에 분명히 사용할 수 없습니다.

+0

작업에서 두 ​​줄을 바꿔 쓰나요? 다시 말해, 흐려진 선을로드하기 전에 modernizr을로드 하시겠습니까? – robbrit

+0

appendChild는 스크립트를 헤드 섹션의 맨 아래에 추가합니다. 함수를 올바른 순서로 실행하고 올바른 순서로 스크립트를 추가하거나 prepend를 사용하여 스크립트를 대신 추가합니다. – adeneo

+0

@robbrit 글쎄, 자바 스크립트 파일 (요청에 따라 처리 됨)이 흐려 지므로 실제로는 modernizr 파일을로드하는 javascript이므로 스왑 할 수는 없습니다. 그리고 adeneo, 당신은 Modernizr과 jQuery를 현재 사용하고있는 방법으로 사용할 수 있다고 말하고 있습니까? 같은 파일에? 내 경험으로 인해 * first *를로드해야하므로 사용하십시오. – ModernDesigner

답변

1

load 이벤트 리스너를 사용하여 동적으로로드 된 자바 스크립트 리소스 (또는 해당 리소스 (이미지, iframe, 동영상 등)에 대한로드)에 응답 할 수 있습니다. 여기에서 가장 쉬운 방법은 다음과 같습니다.

(function() { 
    var script = document.createElement("script"); 
    ... 
    script.onload = function() { 
     // this will run later, when the script loads 
     // in this function you can safely use Modernizr 
    } 
})(); 
+0

차가움. 다시 한 번 감사드립니다! – ModernDesigner

관련 문제