Naloži jQuery samo, če ni prisoten - CSS-triki

Anonim

Recimo, da ste nameravali vključiti cel kup strani, znotraj tega pa ste želeli narediti nekaj posebnih stvari za jQuery. Na tej strani je morda že naložen jQuery ali pa tudi ne. Če že, ga ne želite znova naložiti, če pa ne, pa vseeno. To deluje za to.

Pametna asinhrona pot

// Only do anything if jQuery isn't defined if (typeof jQuery == 'undefined') ( if (typeof $ == 'function') ( // warning, global var thisPageUsingOtherJSLibrary = true; ) function getScript(url, success) ( var script = document.createElement('script'); script.src = url; var head = document.getElementsByTagName('head')(0), done = false; // Attach handlers for all browsers script.onload = script.onreadystatechange = function() ( if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) ( done = true; // callback function provided as param success(); script.onload = script.onreadystatechange = null; head.removeChild(script); ); ); head.appendChild(script); ); getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', function() ( if (typeof jQuery=='undefined') ( // Super failsafe - still somehow failed… ) else ( // jQuery loaded! Make sure to use .noConflict just in case fancyCode(); if (thisPageUsingOtherJSLibrary) ( // Run your jQuery Code ) else ( // Use .noConflict(), then run your jQuery Code ) ) )); ) else ( // jQuery was already loaded // Run your jQuery Code );

Opazite, kako je na več mestih poklicana koda jQuery, ki jo nameravate zagnati. Ne ponavljajte se tam, postavite to v funkcijo, ki jo lahko pokličete, da začnete stvari.

Ta koda je bila od tu prilagojena.

Document.write način

Otroci v modi ne uporabljajo document.write, če pa ste prestar, da bi vam bilo vseeno:

var jQueryScriptOutputted = false; function initJQuery() ( //if the jQuery object isn't available if (typeof(jQuery) == 'undefined') ( if (! jQueryScriptOutputted) ( //only output the script once… jQueryScriptOutputted = true; //output the script (load it from google api) document.write(""); ) setTimeout("initJQuery()", 50); ) else ( $(function() ( // do anything that needs to be done on document.ready // don't really need this dom ready thing if used in footer )); ) ) initJQuery();