2010-05-11 4 views
4

내가 비동기 JQuery와 다운로드 해요 :JQuery가로드되면 어떻게 콜백을 수행합니까?

등으로
function addScript(url) { 
    var script = document.createElement('script'); 
    script.src = url; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} 
addScript('jquery.js'); 

// non-jquery code ... 

// jquery specific code like: $()... 

- 어떻게 할 때부터 내 자바 스크립트 비동기 다운로드 거니까 내가 (JQuery와 한 번 내 JQuery와 특정 코드가로드 전화 - 그것은 선한 차단 아니에요, JQuery가로드되기 전에 내 JQuery 특정 코드를 실행하려고 시도하고있다).

+1

왜 스크립트를 비동기 적으로로드하고 있습니까? – dclowd9901

+0

다운로드하는 동안 차단하지 않아도되고 응답 성이 중요하기 때문에. – Teddyk

+0

정확히 차단 하시겠습니까? 페이지로드? 이것이 궁금하다면, 페이지 하단, 바로 앞에 '' 태그 ... – dclowd9901

답변

-1

나는 표준 자바 스크립트에 많은 아니지만,이 같은 일을 시도 할 수 있습니다 :

var script_object = new addScript('jquery.js'); 

script_object.onLoad('addScript("my_jquery_related.js")'); 

가 인정 하듯이, 그 어둠 속에서 메가 샷입니다. 그래도 문제가 해결되지 않으면

, 어쩌면 당신의 JS 로더에 콜백 변수로 함수를 통과 : 당신의 사본을 호스팅 할 수 있습니다

+0

실제로 HTML 페이지를 인라인하는 jquery 함수를 실제로 호출하려고합니다. 그래서 더 이상 * script_object.onLoad (my_jquery_related_code()) '); * – Teddyk

+0

@ dclowd9901, 나는 "script_object.onLoad 함수가 아닙니다"오류가 발생합니다. – Teddyk

+0

그래, 그게 일어날 까봐 두렵다. 나는 onLoad가'window' 나'document'만을 위해 예약했다고 생각합니다. antoher 옵션으로 업데이트 된 답변 ... – dclowd9901

3

: \

addScript(url, function(){ function_to_call();}) 

function addScript(url, call_back_function) { 
    var script = document.createElement('script'); 
    script.src = url; 
    document.getElementsByTagName('head')[0].appendChild(script); 

    call_back_function.call; 
} 
addScript('jquery.js'); 

내가 가진 전부 그 jquery 파일을 직접 작성하십시오. 그럼 당신은 jquery.js의 맨 아래에있는 콜백 함수에 대한 호출을 추가 할 수 있습니다

/* jquery code goes here ... */ 

my_onload_callback(); 
1

당신은 당신의 페이지 (잠재적으로 모든 페이지)에 LabJs를 인라인 할 수 있습니다. 단점은 스크립트를 반복해서 인라인하는 것입니다. 4K는 축소 된 - - 위쪽에서 LabJs는 아주 작은이고 그것을 당신 같은 매우 간단한 코드 복잡한 비동기 부하 패턴을 크로스 브라우저를 처리 할 수 ​​있습니다 : (파이어 폭스 33.0.3에서 테스트)이 작동 나를 위해

<script> 
// Minified LabJs goes here 
</script> 
<script> 
function init() { 
    // Your code after jquery loads goes here 
} 

$LAB 
.script('//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js') 
.wait(init); 
</script> 
</body> 
2

:

if(typeof(jQuery) == "undefined"){ 

     //create onload-callback function 
     window["__9384nalksdfalkj04320"] = function(){ 
      console.log("jQuery=" + jQuery); 
     }; 

     //load jQuery asynchronously 
     var script = document.createElement("script"); 
     script.setAttribute("type", "text/javascript"); 
     script.setAttribute("onload", "__9384nalksdfalkj04320();"); //register onload-callback listener function 
     script.setAttribute("src", "http://code.jquery.com/jquery-latest.min.js"); 
     document.head.appendChild(script); 
    } 
관련 문제