Încărcați jQuery numai dacă nu este prezent - CSS-Tricks

Anonim

Spuneți că urmați să faceți o includere pe o grămadă întreagă de pagini, iar în interiorul acesteia ați vrut să faceți niște lucruri specifice jQuery. Această pagină poate avea sau nu deja încărcat jQuery. Dacă se întâmplă deja, nu doriți să îl încărcați din nou, dar dacă nu, da. Acest lucru funcționează pentru asta.

Mod asincron inteligent

// 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 );

Observați cum există mai multe locuri în care se apelează codul jQuery pe care intenționați să îl rulați. Nu vă repetați acolo, puneți-l într-o funcție pe care o puteți apela pentru a da startul lucrurilor.

Acest cod a fost adaptat de aici.

Document.scrie modul

Copiii de șold nu folosesc document.write, dar dacă sunteți prea bătrân pentru a vă îngriji:

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