Carica jQuery solo se non presente - Trucchi CSS

Anonim

Supponiamo che stavi per includere un intero gruppo di pagine e all'interno di quell'inclusione volevi fare alcune cose specifiche per jQuery. Quella pagina può o non può già avere jQuery caricato. Se lo fa già, non vuoi caricarlo di nuovo, ma in caso contrario, lo fai. Questo funziona per quello.

Modo asincrono intelligente

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

Nota come ci sono più posti in cui il codice jQuery che intendi eseguire viene chiamato. Non ripeterti lì, mettilo in una funzione che puoi chiamare per dare il via alle cose.

Questo codice è stato adattato da qui.

Document.write way

I ragazzi alla moda non usano document.write, ma se sei troppo vecchio per preoccupartene:

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