2010-05-13 2 views
9

Я хочу загрузить файл javascript в конце jquery.ready, так что код в моем готовом обработчике не должен ждать выполнения, пока не будет загружен этот большой файл javascript.загрузка javascript-файла после jquery.ready

Код моей 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

+0

Спасибо Emil, я не знал об этом, и это помогло много – Peadar

+0

, если jquery не загружен, это не сработает –

0

Котировочная «</script>» тег будет фактически закончить блок JavaScript преждевременно.

Я хотел бы использовать этот метод:

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

не забудьте добавить его в качестве дочернего document.body или головной элемент. Кстати, вы можете избавиться от $ и parens, если вы не используете jquery. – rob

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"); 
Смежные вопросы