2009-07-13 14 views
12

¿Es posible tener 2 versiones diferentes de jQuery en el mismo documento y hacer que no colisionen entre ellas?Dos versiones de jQuery en la misma página

Por ejemplo, si creo un bookmarklet y deseo basar el código en jQuery. Este bookmarklet se inyecta en una página que utiliza otra versión de jQuery y mi código sobrescribe la versión utilizada en la página.

¿Es posible evitar eso? O hay algunas otras bibliotecas que ofrecen esta funcionalidad O tal vez debería replantearme todo.

Gracias por las respuestas y los punteros,

bob

+1

Puede verificar si jQuery ya está en una página antes de volver a inyectarlo. –

+3

Definitivamente debes reconsiderarlo. Deberías actualizar las funciones anteriores para que funcionen con la nueva jQuery, y ambas son solo una tonelada de inflado y un deseo de colisión. –

+0

¿Tiene control sobre la versión de jQuery que se agrega a la página? No desea que sus visitantes tengan que descargar OTRA versión de la biblioteca si pueden evitarlo, es una mala práctica e infla el tamaño del documento para sus visitantes. –

Respuesta

12

jQuery viene con una forma de evitar colisiones. Después de cargar la primera versión, puede asignarla a una variable diferente.

var $j = jQuery.noConflict(); 

Y luego cargue su segunda versión de jQuery. Se puede acceder al primero que carga con $ j (...) mientras que al segundo se puede acceder con $ (...).

Alternativamente, alguien hizo un little helper en un intento de facilitar el cambio entre las diferentes versiones.

+0

bob no controla cuándo se carga la primera versión, ya que esto está sucediendo en un sitio de terceros a través de un mercado de libros. puede llamar a noConflct antes de agregar la versión más nueva a través de createElement ('script'), que 'actualizará' el sitio de terceros. ¿Puedes asumir que el código de terceros es compatible? – russau

+0

Con el asistente de Versiones, puede alternar entre las diferentes versiones de jQuery siempre que lo desee. Simplemente diga Versions.use ('jquery', 'default') o Versions.use ('jquery', 'latest') después de que los haya agregado para cambiar. Si su código está usando la versión más nueva y el sitio de la tercera parte no lo está, solo tiene que asegurarse de que establece la versión correctamente al principio y al final de su código. – Chris

2

Aquí es una manera de detectar es JQuery ya está presente: jQuery in widget

Calcular la versión más antigua de jQuery su código trabajará con .. Y se niega a trabajar si la versión presente es demasiado antigua. Solo unas pocas personas se perderán, la mayoría de los sitios que usan JQuery están bastante actualizados ...

0

¿Por qué no tener simplemente diferentes versiones de su javascript para las diferentes versiones de jquery, así que mire qué versión hay en la página y Obtenga el código apropiado que funcionará en esa versión de jquery.

Esto sería más seguro, ya que cualquier otra cosa puede ser muy frágil, ya que parece que no tiene control sobre la versión de jquery que estará en la página.

Cuestiones relacionadas