2014-09-09 2 views
0

는이 질문에 대한 답으로 혼란 스러워요 : Execution of dynamically loaded JS files로드 직후에 동적으로로드 된 자바 스크립트에서 함수를 실행하는 방법은 무엇입니까?

내가 일부 HTML을 가지고 :

<html> 
    <head> 
     <script type="text/javascript" src="/scripts/onload.js"></script> 
    </head> 
    <body onload="loadscript()"> 
    </body> 
</html> 

loadscript() 삽입 머리에 다른 스크립트를. 삽입 된 스크립트에서 함수를 즉시 호출하려면 어떻게합니까? (jQuery를 사용하지 않고)

EDIT : 삽입 할 스크립트는 현재 페이지의 경로에 따라 런타임에 결정됩니다.

답변

0

즉시 브라우저가 네트워크를 통해 먼저 가져와야하기 때문에 새 스크립트에서 코드를 실행할 수 없습니다. 시간이 걸리므로 비동기 액션입니다. 스크립트 태그를 삽입 한 코드는 백그라운드에서 스크립트를 가져 오는 동안 계속 실행됩니다.

새 스크립트 파일이 도착하면 JavaScript 엔진은 가능한 한 빨리 구문 분석하고 실행합니다. 다른 JavaScript 코드가 이미 실행중인 경우 (예 : 이벤트 처리기) 새 스크립트를 실행하기 전에 해당 코드가 완료 될 때까지 기다립니다. This article은 JavaScript 비동기 실행 모델에 대한 훌륭한 설명입니다.

새 스크립트가 실행될 때 당신은 정확하게 제어 할 수 있지만, 가능 즉시 을 실행하도록 새 스크립트의 최상위 수준에서 함수를 호출 할 수 있습니다 :

function myFunction() { 
    // code to execute when the second script is included 
} 

myFunction(); 

하는 경우 당신은 IIFE를 사용하여 내 다른 곳에서도 당신은 몇 가지 문자를 저장할 수있는이 기능을 참조 할 필요가 없습니다 :

!function() { 
    // code to execute when the second script is included 
}() 

(또는 (function() { /* ... */ }()), 또는 인생의 구문에 대한 다른 변종의).

관련 문제