2010-05-13 34 views
9

我想在jquery.ready的末尾加載一個JavaScript文件,這樣我的就緒處理程序中的代碼就不必等待執行,直到加載了這個大的JavaScript文件。在jquery.ready後加載javascript文件

我的jquery.ready代碼根本不依賴於這個JavaScript文件。

這是一個很好的方法嗎?

$(function(){ 
    ... 
    ...  
    $('head').append('<script type="text/javascript" src="/largejs.js"></script>'); 
}); 

回答

22

使用.getScript:如果你的應用是新的,而不是一起又太遠 http://api.jquery.com/jQuery.getScript/

$(document).ready(function(){ 
    ... 
    ... 
    $.getScript("largejs.js"); 
}); 
+0

+1從未使用過這種方法,謝謝。 – xandercoded 2010-05-13 19:25:40

+0

謝謝埃米爾,我不知道這個,它幫了很多 – Peadar 2014-08-18 14:25:07

+0

如果jquery沒有加載它不會工作 – 2016-08-09 06:59:06

0

引用的「</script>」標記實際上會過早結束您的JavaScript代碼塊。

我會用這個方法:

var newScript = $(document.createElement('script')); 
newScript.src="/largejs.js" 
+1

不要忘記將其追加爲document.body的的孩子或頭元素。順便說一句,如果你不使用jQuery,你可以擺脫$和parens。 – rob 2010-05-13 19:15:42

0

,你可以得到很多出爲此目的使用LABjs。它允許所有腳本文件並行加載,甚至可以在任何其他時間(按需)加載。 http://labjs.com/

1

解決方案將檢查的jQuery已經加載,如果沒有它會在一段時間後點擊這裏500毫秒,循環,直到它發現的jQuery

function loadScriptAfterJQueryReady(jsFile) { 
    setTimeout(function() { 
     var loadScript=true; 
     if (typeof jQuery == 'undefined') { 
      if (typeof window.jQuery == 'undefined') { 
       /* jQuery is not loaded */ 
       loadScript=false; 
       loadScriptAfterJQueryReady(jsFile); 
      }else{ 
       /* jQuery is loaded */ 
      } 
     } else { 
      /* jQuery is loaded */ 
     } 
     if(true==loadScript) jQuery.getScript(jsFile); 
    }, 500); 
} 
loadScriptAfterJQueryReady("my.js");