Katakan anda akan melakukan penyertaan pada sejumlah halaman, dan di dalamnya termasuk anda ingin melakukan beberapa perkara khusus jQuery. Halaman tersebut mungkin atau belum memuat jQuery. Sekiranya sudah berlaku, anda tidak mahu memuatkannya lagi, tetapi jika tidak, anda akan melakukannya. Ini berfungsi untuk itu.
Cara Asinkron Pintar
// 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 );
Perhatikan bagaimana terdapat banyak tempat kod jQuery yang ingin anda jalankan. Jangan ulangi diri anda di sana, letakkan dalam fungsi yang boleh anda panggil untuk memulakan sesuatu.
Kod ini disesuaikan dari sini.
Cara dokumen. Menulis
Anak pinggul tidak menggunakan document.write, tetapi jika anda terlalu tua untuk menjaga:
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();