2010-05-13 31 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");