2010-05-13 5 views
9

Je veux charger un fichier javascript à la fin de jquery.ready afin que le code dans mon gestionnaire prêt ne doit pas attendre pour exécuter jusqu'à ce que ce grand fichier javascript est chargé.chargement du fichier javascript après jquery.ready

Mon code jquery.ready ne dépend pas du tout de ce fichier javascript.

Serait-ce un bon moyen de le faire?

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

Répondre

22

Utilisation .getScript: http://api.jquery.com/jQuery.getScript/

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

+1 N'a jamais utilisé cette méthode, merci. – xandercoded

+0

Merci Emil, je ne savais pas à ce sujet et il a beaucoup aidé – Peadar

+0

si jquery n'est pas chargé, il ne fonctionnera pas –

0

La cité tag "</script>" se terminera réellement votre bloc de JavaScript prématurément.

J'utilise cette méthode:

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

ne pas oublier de l'ajouter comme un enfant de la document.body ou un élément de tête. BTW, vous pouvez vous débarrasser des $ et des parens si vous n'utilisez pas jquery. – rob

0

Si votre application est nouveau et pas trop loin encore, vous pourriez obtenir beaucoup de en utilisant LABjs à cette fin. Il permet à tous vos fichiers de script de se charger en parallèle ou même à tout autre moment que vous préférez (à la demande). solution http://labjs.com/

1

vérifiera jquery déjà chargé, sinon il vérifiera après un certain temps ici 500ms et boucle jusqu'à ce qu'elle trouve 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"); 
Questions connexes