2009-07-13 42 views
12

È possibile avere 2 diverse versioni jQuery nello stesso documento e far sì che non si scontrino tra loro?Due versioni jQuery nella stessa pagina

Ad esempio, se creo un bookmarklet e voglio basare il codice su jQuery. Questo bookmarklet è iniettato su qualche pagina che usa un'altra versione di jQuery, quindi il mio codice sovrascriverà la versione utilizzata nella pagina.

È possibile evitarlo? Oppure ci sono altre librerie che forniscono questa funzionalità O forse dovrei ripensare l'intera faccenda.

Grazie per le risposte e puntatori,

bob

+1

È possibile controllare se jQuery è già su una pagina prima di iniettarlo nuovamente. –

+3

Dovresti sicuramente ripensarlo. Dovresti aggiornare le funzioni più vecchie per lavorare con il nuovo jQuery, compresi entrambi sono solo una tonnellata di bloat e un desiderio di collisioni. –

+0

Hai il controllo sulla versione di jQuery che viene aggiunta alla pagina? Non vuoi che i tuoi visitatori debbano scaricare UN'ALTRA versione della biblioteca se possono aiutarla - è una cattiva pratica e gonfia la dimensione del documento per i tuoi visitatori. –

risposta

12

jQuery viene fornito con un modo per evitare collisioni. Dopo aver caricato la prima versione, è possibile assegnarla a una variabile diversa.

var $j = jQuery.noConflict(); 

E quindi caricare la seconda versione di jQuery. È possibile accedere al primo caricato con $ j (...) mentre il secondo è accessibile con $ (...).

In alternativa, qualcuno ha effettuato un little helper nel tentativo di semplificare il passaggio tra versioni diverse.

+0

bob non controlla quando viene caricata la prima versione poiché ciò avviene su un sito di terzi tramite un bookmarket. è possibile chiamare noConflct prima di aggiungere la versione più recente tramite createElement ('script') - che dovrebbe "aggiornare" il sito di terze parti. puoi ipotizzare che il codice di terze parti sia compatibile? – russau

+0

Con l'helper delle versioni, puoi passare da una versione all'altra di jQuery quando vuoi. Basta dire Versions.use ('jquery', 'default') o Versions.use ('jquery', 'latest') dopo averli aggiunti per passare. Se il suo codice utilizza la versione più recente e il sito della terza parte non lo è, deve solo assicurarsi di impostare correttamente la versione all'inizio e alla fine del suo codice. – Chris

2

Ecco un modo per rilevare è JQuery è già presente: jQuery in widget

Calcolare la versione più vecchia di JQuery vostro codice lavorerà con .. E rifiuti di lavorare se la versione presente è troppo vecchia. Mancano solo poche persone, la maggior parte dei siti che utilizzano JQuery sono abbastanza aggiornati.

0

Perché non avere solo versioni diverse del tuo javascript, per diverse versioni di jquery, quindi, guarda quale versione è presente sulla pagina e ottenere il codice appropriato che funzionerà su quella versione di jQuery.

Questo sarebbe più sicuro, poiché qualsiasi altra cosa può essere molto fragile, poiché sembra che tu non abbia il controllo sulla versione di jquery che sarà presente sulla pagina.

Problemi correlati