2011-08-27 14 views
8

Estoy escribiendo una extensión de cromo que juguetea con el diseño de una página. Quiero utilizar la última versión de jQuery para hacer esto.¿Cómo puedo usar jquery en una secuencia de comandos de contenido de extensión de Chrome cuando una versión anterior ya está en la página

La página en cuestión ya incluye la versión 1.4.4 de jQuery como parte de uno de sus scripts.

Si incluyo la versión más reciente de jQuery, la página se cuelga. ¿Cómo puedo incluir la versión más reciente de jQuery para que solo esté disponible para mi script de contenido y no afecte a los scripts que ya están en la página?

Respuesta

6

Si inserta su jquery como un script de contenido será sandboxed, no tendrá ningún conflicto sin importar lo que esté usando una página principal.

+0

_ "Por ejemplo, un script de contenido podría incluir JQuery v1 y la página podría incluir JQuery v2, y no entrarían en conflicto entre ellos ". _ – Eric

1

En esencia, puede usar el nombre de las diferentes versiones de jQuery usando su No Conflict mode y ejecutando su código en un cierre. Por ejemplo:

<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> 

Tenga en cuenta que esta declaración hace jq162 a disposición del alcance global, de modo que pueda ser reutilizado en otros lugares. Si prefiere ubicar la instancia de jQuery localmente, conviértalo en var.

+0

noConflict todavía deja la variable 'jQuery', ¿no? – Eric

+0

Pasando el argumento 'true' a' noConflict() ', restaura el alcance original de las variables' $ 'y' jQuery', para mi comprensión de la documentación. – lsuarez

+0

Es decir, la respuesta a su pregunta es "no" al usar la llamada anterior como se indica, en caso de que no esté claro. xD (necesita cafeína ...) – lsuarez

Cuestiones relacionadas