Cómo incluir la biblioteca jQuery en un solo archivo js sin interferir con las bibliotecas existentes

Los sitios web de terceros pueden colocar mi etiqueta de script en sus sitios web, por ejemplo, ExternalSite.html en la sección principal:

 (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); })();  

En mi propio servidor, en el archivo myscript.js tengo este código:

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

Pero una vez que un usuario visita el sitio de terceros, en la primera línea aquí Uncaught ReferenceError: $ is not defined

Probablemente esto se deba a que no hago referencia a jQuery en el sitio de terceros, donde incluyo el archivo myscript.js. El problema es ese:

  1. No sé si este sitio de terceros incluso tiene jQuery funcionando
  2. No sé cómo hacer referencia a jQuery desde myscript.js, también sin posiblemente interferir con una referencia de jQuery existente en el sitio de terceros

Primero haga una comprobación de la carga de jQuery usando 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 } } 

Hay otras formas similares de verificación que podemos usar

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

Hay un fiddle trabajo disponible por atornblad que también indica el tiempo que jQuery tardó en cargar.

Puedes echar un vistazo para una mejor referencia.

Espero que esto ayude..