Tarkime, kad ketinote įtraukti įtraukimą į daugybę puslapių, o to viduje norėjote atlikti tam tikrus „jQuery“ dalykus. Gali būti, kad to puslapio „jQuery“ jau nėra. Jei taip jau yra, nenorite jo dar kartą įkelti, bet jei ne, tai darote. Tai tam tinka.
Protingas asinchroninis kelias
// 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 );
Atkreipkite dėmesį, kaip yra kelios vietos, kurias kviečiamas paleisti „jQuery“ kodas. Nekartokite savęs ten, įdėkite ją į funkciją, kurią galite iškviesti, kad pradėtumėte viską.
Šis kodas buvo pritaikytas čia.
Document.write būdas
Klubo vaikai nenaudoja document.write, bet jei esate per seni rūpintis:
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();