2012-01-03 4 views
8

Io uso HTML5 boilerplate e jQuery è dichiarato due volte nella pagina HTML in questo modo:Qual è il motivo per includere script con due chiamate diverse?

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script> 

Qual è la ragione che sta dietro inclusi i file in questo modo il codice JavaScript?

Sembra che l'unica ragione sia caricare la libreria jQuery dal server locale se non è raggiungibile da Google CDN.

+8

Non sono abbastanza sicuro di cosa stai chiedendo. Hai dato la risposta nella tua domanda ... – lonesomeday

+0

funziona se non hai una connessione internet –

risposta

8

Essi ragionano html5 Boilerplate include lo script in questo modo perché tenta di "carica libreria jQuery dal server locale se non è raggiungibile da Google CDN." =)

2
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 

Questo tenterà di caricare la versione del protocollo-meno della libreria jQuery

<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script> 

Questo caricherà la versione locale della libreria jQuery se la versione ospitata da Google non è stato caricato correttamente (irraggiungibile, sito inattivo, ecc.), quindi il controllo window.jQuery. Se window.jQuery non è true allora eseguirà il document.write

1

Sì, sta controllando se jQuery è caricato o meno, se non lo carica quindi dal proprio server.

// viene utilizzato solo per renderlo compatibile con HTTP e HTTPS.

+0

+1 per chiarimenti su "//" Non lo sapevo! – enam

0

Il motivo è failback. La prima riga del codice

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 

Estrarre la libreria jQuery dal CDN di Google come si è detto. Allora questo riga successiva:

<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script> 

verificherà che libreria jQuery è stato caricato (da Google CDN), se non, quindi recuperare una copia locale di jQuery.

2

Il caricamento di jQuery dal CDN di Google può essere molto più veloce del caricamento dal server locale e può essere memorizzato nella cache in modo che l'utente possa già disporre di una copia memorizzata nella cache da un altro sito Web.

Il controllo è assicurarsi che sia stato caricato, altrimenti in caso di errore, caricarlo dal server locale.

0

Se la domanda è "perché il protocollo di trasferimento non è specificato?," la risposta è "non è necessario specificare". Ciò consente di utilizzare lo stesso riferimento allo script indipendentemente dal fatto che la connessione stia utilizzando un socket sicuro o meno senza che gli utenti ricevano avvisi relativi al contenuto crittografato/non crittografato.

Se la domanda era "qual è questa linea facendo ?: window.jQuery || document.write ('</script>')", allora la risposta è che stiamo utilizzando un (più o meno) dichiarazione ternaria per testare l'oggetto jQuery, che valuterà un valore "falso" se la libreria jQuery non è stata caricata e, in tal caso, questo test attiverà la seconda metà dell'istruzione, determinando il caricamento del jQuery locale.

HTH.

Problemi correlati