controllare se jquery è stato caricato, quindi caricarlo se falso

Qualcuno sa come controllare se jquery è stato caricato (con javascript), quindi caricarlo se non è stato caricato.

qualcosa di simile a

if(!jQuery) { //load jquery file } 

Forse qualcosa del genere:

  

Evita di utilizzare “if (! JQuery)” poiché IE restituirà l’errore: jQuery è ‘indefinito’

Usa invece: if (typeof jQuery == ‘undefined’)

  

Dovrai inoltre verificare se il JQuery è stato caricato dopo averlo aggiunto all’intestazione. Altrimenti dovrai aspettare l’evento window.onload, che è più lento se la pagina ha delle immagini. Ecco uno script di esempio che controlla se il file JQuery è stato caricato, poiché non avrai la comodità di poter usare $ (document) .ready (funzione …

http://neighborhood.org/core/sample/jquery/append-to-head.htm

Metodo 1:

 if (window.jQuery) { // jQuery is loaded } else { // jQuery is not loaded } 

Metodo 2:

 if (typeof jQuery == 'undefined') { // jQuery is not loaded } else { // jQuery is loaded } 

Se il file jquery.js non è caricato, possiamo forzare il caricamento in questo modo:

 if (!window.jQuery) { var jq = document.createElement('script'); jq.type = 'text/javascript'; // Path to jquery.js file, eg. Google hosted version jq.src = '/path-to-your/jquery.min.js'; document.getElementsByTagName('head')[0].appendChild(jq); } 

Prova questo :

  

Questo controlla se jQuery è disponibile o meno, altrimenti lo aggiungerà dynamicmente dal percorso specificato.

Rif: simula un "include_once" per jQuery

O

include_once equivalente per js. Rif: https://raw.github.com/kvz/phpjs/master/functions/language/include_once.js

 function include_once (filename) { // http://kevin.vanzonneveld.net // + original by: Legaev Andrey // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Michael White (http://getsprink.com) // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Brett Zamir (http://brett-zamir.me) // - depends on: include // % note 1: Uses global: php_js to keep track of included files (though private static variable in namespaced version) // * example 1: include_once('http://www.phpjs.org/js/phpjs/_supporters/pj_test_supportfile_2.js'); // * returns 1: true var cur_file = {}; cur_file[this.window.location.href] = 1; // BEGIN STATIC try { // We can't try to access on window, since it might not exist in some environments, and if we use "this.window" // we risk adding another copy if different window objects are associated with the namespaced object php_js_shared; // Will be private static variable in namespaced version or global in non-namespaced // version since we wish to share this across all instances } catch (e) { php_js_shared = {}; } // END STATIC if (!php_js_shared.includes) { php_js_shared.includes = cur_file; } if (!php_js_shared.includes[filename]) { if (this.include(filename)) { return true; } } else { return true; } return false; } 

Anche se si può avere un accodamento di testa potrebbe non funzionare in tutti i browser. Questo era l’unico metodo che ho trovato per lavorare in modo coerente.

  
 var f = ()=>{ if (!window.jQuery) { var e = document.createElement('script'); e.src = "https://code.jquery.com/jquery-3.2.1.min.js"; e.onload = function () { jQuery.noConflict(); console.log('jQuery ' + jQuery.fn.jquery + ' injected.'); }; document.head.appendChild(e); } else { console.log('jQuery ' + jQuery.fn.jquery + ''); } }; f(); 

Puoi controllare se jQuery è caricato o meno da molti modi come:

 if (typeof jQuery == 'undefined') { // jQuery IS NOT loaded, do stuff here. } 

 if (typeof jQuery == 'function') //or if (typeof $== 'function') 

 if (jQuery) { // This will throw an error in STRICT MODE if jQuery is not loaded, so don't use if using strict mode alert("jquery is loaded"); } else { alert("Not loaded"); } 

 if( 'jQuery' in window ) { // Do Stuff } 

Ora dopo aver controllato se jQuery non è stato caricato, puoi caricare jQuery in questo modo:

Anche se questa parte ha ricevuto risposta da molti in questo post ma continua a rispondere per motivi di completezza del codice

  // This part should be inside your IF condition when you do not find jQuery loaded var script = document.createElement('script'); script.type = "text/javascript"; script.src = "http://code.jquery.com/jquery-3.3.1.min.js"; document.getElementsByTagName('head')[0].appendChild(script); 

Vecchio post ma ho fatto una buona soluzione su ciò che è testato sui luoghi serval.

https://github.com/CreativForm/Load-jQuery-if-it-is-not-already-loaded

CODICE:

 (function(url, position, callback){ // default values url = url || 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'; position = position || 0; // Check is jQuery exists if (!window.jQuery) { // Initialize  var head = document.getElementsByTagName('head')[0]; // Create  

A GitHub è una spiegazione migliore, ma in generale questa funzione è ansible aggiungere ovunque nel codice HTML e si inizializzerà jquery se non è già caricato.

Sto usando CDN per il mio progetto e come parte della gestione delle fallback, stavo usando sotto il codice,

   

Solo per verificare, ho rimosso il riferimento CDN ed eseguito il codice. È rotto e non è mai entrato in se il ciclo come tipo di jQuery viene come funzione invece di indefinito.

Questo è dovuto alla versione precedente di jquery memorizzata nella cache 1.6.1 che restituisce la funzione e interrompe il mio codice perché sto usando jquery 1.9.1. Poiché ho bisogno della versione esatta di jQuery, ho modificato il codice come di seguito,