Comment inclure la bibliothèque jQuery dans un fichier js unique sans interférer avec les bibliothèques existantes

Les sites Web tiers peuvent placer mon tag de script sur leurs sites Web, comme par exemple ExternalSite.html dans la section head

 (function () { var ttScript = document.createElement('script'); ttScript.async = true; ttScript.src = '//www.example.com/script/myscript.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ttScript); })();  

Sur mon propre serveur, dans le fichier myscript.js, j’ai ce code:

 $.ajax({ url: "http://www.example.com/iplookup.php", data: null, type: 'GET', crossDomain: true, dataType: 'jsonp' }).done(function (json) { self.ip = json; }); 

Mais une fois qu’un utilisateur visite le site tiers, sur la première ligne, je reçois Uncaught ReferenceError: $ is not defined

Maintenant, c’est probablement parce que je ne fais pas référence à jQuery sur le site tiers, où j’inclus le fichier myscript.js. Le problème est que:

  1. Je ne sais pas si jQuery est en cours d’exécution sur ce site tiers
  2. Je ne sais pas comment faire référence à jQuery depuis myscript.js, également sans interférer éventuellement avec une référence jQuery existante sur le site tiers

Commencez par vérifier le chargement de jQuery à l’aide de javaScript.

  window.onload = function() { if (window.jQuery) { // jQuery is loaded // Now insert your scripts } else { // jQuery is not loaded // Load it manually from any cdn eg, //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js } } 

Nous pouvons utiliser d’autres méthodes de vérification similaires.

  if (typeof jQuery != 'undefined') { // jQuery is loaded } else { // jQuery is not loaded } if (jQuery) { // jQuery is loaded } else { // jQuery is not loaded } 

Atornblad propose un fiddle fonctionnel qui indique également le temps de chargement de jQuery.

Vous pouvez regarder pour une meilleure référence.

J’espère que cela t’aides..