2011-08-27 10 views
8

Sto scrivendo un'estensione di cromo che gioca con il layout di una pagina. Voglio usare l'ultima versione di jQuery per farlo.Come posso usare jquery in uno script di contenuto di estensione chrome quando una versione precedente è già nella pagina

La pagina in questione include già la versione 1.4.4 di jQuery come parte di uno dei propri script.

Se includo la versione più recente di jQuery, la pagina si blocca. Come posso includere la versione più recente di jQuery in modo che sia disponibile solo per il mio script di contenuto e non abbia effetto sugli script già presenti nella pagina?

risposta

6

Se si inserisce il jquery come script di contenuto, sarà sandboxed, non si verificheranno conflitti, indipendentemente dalla pagina padre utilizzata.

+0

_ "Ad esempio, uno script di contenuto può includere JQuery v1 e la pagina potrebbe includere JQuery v2, e non sarebbero in conflitto tra loro. "_ – Eric

1

È possibile essenzialmente lo spazio dei nomi di diverse versioni di jQuery utilizzando il suo No Conflict mode ed eseguendo il codice in una chiusura. Per esempio:

<script src="jquery-1.6.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    jq162 = jQuery.noConflict(true); 
    (function ($) { 
     $(function() { 
      // Your document ready code here 
     }); 
    })(jq162); 
</script> 

Si prega di notare questa dichiarazione rende jq162 a disposizione la portata globale in modo che possa essere riutilizzato altrove. Se preferisci applicare localmente l'istanza di jQuery, impostalo come var.

+0

noConflict lascia ancora la variabile 'jQuery', vero? – Eric

+0

Passando l'argomento 'true' a' noConflict() ', ripristina sia l'ambito originale delle variabili' $' e 'jQuery', sia la mia comprensione della documentazione. – lsuarez

+0

Vale a dire che la risposta alla tua domanda è "no" quando si utilizza la chiamata sopra indicata, nel caso in cui non fosse chiaro. xD (serve caffeina ...) – lsuarez

Problemi correlati