JQuery'yi Yalnızca Mevcut Değilse Yükle - CSS Hileleri

Anonim

Diyelim ki bir sürü sayfada bir ekleme yapacaksınız ve bunun içinde jQuery'ye özgü bazı şeyler yapmak istediğinizi de dahil edin. Bu sayfada jQuery yüklü olabilir veya olmayabilir. Zaten yüklüyse, tekrar yüklemek istemezsiniz, ancak yoksa yüklersiniz. Bu bunun için çalışıyor.

Akıllı Asenkron Yol

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

Çalıştırmak istediğiniz jQuery kodunun çağrıldığı birden fazla yer olduğuna dikkat edin. Orada kendinizi tekrar etmeyin, işleri başlatmak için arayabileceğiniz bir işleve koyun.

Bu kod buradan uyarlanmıştır.

Document.write yolu

Havalı çocuklar document.write kullanmaz, ancak umursamayacak kadar yaşlıysanız:

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