Comment savoir si JQuery a fini de charger

Pour certains cas, je dois charger jQuery en utilisant un javascript comme ceci:

<script type="text/javascript"> if (typeof jQuery == 'undefined') { var script = document.createElement('script'); script.type = "text/javascript"; script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"; document.getElementsByTagName('head')[0].appendChild(script); } </script> 

Mais comment savoir si JQuery a fini de charger pour pouvoir l'utiliser.

Vous devrez écrire un code pour détecter quand un script chargé de façon dynamique est chargé et, malheureusement, il fonctionne légèrement différent dans certains navigateurs plus anciens, de sorte qu'il ne soit pas aussi simple que possible. Voici un bon article de référence sur la façon de faire cela: http://www.ejeliot.com/blog/109

Voici le code de cet article:

 function loadScript(sScriptSrc, oCallback) { var oHead = document.getElementsByTagName('head')[0]; var oScript = document.createElement('script'); // make sure callback isn't run more than once function runCallback() { if (oCallback) { oCallback(); oScript.onload = oScript.onreadystatechange = null; oCallback = null; } } oScript.type = 'text/javascript'; // most browsers oScript.onload = runCallback; // IE 6 & 7 oScript.onreadystatechange = function() { if (this.readyState === 'complete') { runCallback(); } } oScript.src = sScriptSrc; oHead.appendChild(oScript); } 

Alternativement, vous pouvez utiliser une des petites bibliothèques qui font cela pour vous. Vous pouvez voir une liste de ceux-ci ici: http://microjs.com/#loader . Bien que je ne suis pas sûr de vouloir utiliser une autre bibliothèque pour aider à charger votre bibliothèque principale.

Essayez onload événement onload :

  //..... script.onload = function(){ alert('jQuery is loaded succesfully'). }; script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"; 

Bravo pour la réponse de l'amie. Les callbacks sont sexy.

Deuxième fissure.

 function loadJQ(callback) { if(!window.jQuery) { // Create jQuery script element. var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'path/to/jquery.js'; document.body.appendChild(script); script.onload = function(){ callback(jQuery); }; // IE 6 & 7 ala jfriend00 script.onreadystatechange = function() { if (this.readyState == 'complete') callback(jQuery); } } else { callback(jQuery); } } 

Invocation

 loadJQ(function($){ alert($ === jQuery); // true. jquery is loaded. }); 

Vous pouvez mettre le code dans

 $(document).ready(function() { // Handler for .ready() called. }); 

Voici les documents: http://api.jquery.com/ready/

Edit: Je suppose que j'ai mal compris la question. Donc, je ne peux pas répondre à la façon dont il est chargé, mais peut fournir une autre approche pour charger la lib.

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script>window.jQuery || document.write("\x3Cscript src=\"path/to/js/jquery-1.7.1.min.js') }}\">\x3C/script>")</script> 

Ici, une version locale de jQuery est chargée, si l'api google n'est pas disponible. Que le snip ci-dessus devrait être assez sûr que le jQuery est chargé.