Fancybox rompe con el nuevo jQuery v1.9.0.
Afecta tanto a Fancybox v1.3.4 como a continuación, y a la versión 2.1.3 y a continuación.
Los errores mostrados son:
v1.3.4:
Timestamp: 15/01/2013 10:03:28 AM
Error: TypeError: b.browser is undefined
Source File: ...fancybox/jquery.fancybox-1.3.4.pack.js
Line: 18
... otros errores
Uncaught TypeError: Cannot read property 'msie' of undefined jquery.fancybox-1.3.4.pack.js:18
Uncaught TypeError: Object [object Object] has no method 'fancybox'
En v2.1.3:
Timestamp: 15/01/2013 10:09:58 AM
Error: TypeError: $.browser is undefined
Source File: h.../fancybox2.1.3/jquery.fancybox.js
Line: 139
Si está usando esto para llamar a jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... ¡¡ Cualquiera de sus implementaciones de fancybox existentes fallará !!
jquery-latest.js
en producción!Respuestas:
Parece que existe un error en jQuery informado aquí: http://bugs.jquery.com/ticket/13183 que rompe el script Fancybox.
También consulte https://github.com/fancyapps/fancyBox/issues/485 para obtener más referencias.
Como solución alternativa, retroceda a jQuery v1.8.3 mientras se corrige el error de jQuery o se repara Fancybox.
ACTUALIZACIÓN (16 de enero de 2013): Fancybox v2.1.4 ha sido lanzado y ahora funciona bien con jQuery v1.9.0.
Para fancybox v1.3.4, aún necesita retroceder a jQuery v1.8.3 o aplicar el script de migración como se indica en la respuesta de @ Manu.ACTUALIZACIÓN (17 de enero de 2013): solución para los usuarios de Fancybox v1.3.4 :
Parchear el archivo js FancyBox para que funcione con jQuery v1.9.0 de la siguiente manera:
Busque alrededor de la línea 29 donde dice:
y reemplácelo por ( EDITADO el 19 de marzo de 2013: filtro más preciso):
ACTUALIZACIÓN (19 de marzo de 2013): También reemplace
$.browser.msie
pornavigator.userAgent.match(/msie [6]/i)
alrededor de la línea 615 (y / o reemplace todas las$.browser.msie
instancias, si corresponde), gracias joofow ... ¡eso es!O descargue la versión ya parcheada de AQUÍ (ACTUALIZADO el 19 de marzo de 2013 ... gracias fairylee por señalar el corchete de cierre adicional)
NOTA : este es un parche no oficial y no es compatible con el autor de Fancybox, sin embargo, funciona como está. Puede usarlo bajo su propio riesgo;)
Opcionalmente, puede revertir a jQuery v1.8.3 o aplicar el script de migración como se indica en la respuesta de @ Manu.
fuente
/msie [6]/i
? - La clase de carácter[6]
es exactamente equivalente al carácter6
, es decir, sin los corchetes. Eso no inspira mucha confianza en el código…: /[6-8]
y en este caso fue como[6]
, al final es solo una convención de sintaxis. De todos modos, si son "exactamente equivalentes", ¿cómo afecta esto la confianza en el código?!?! Si el resultado con o sin paréntesis fue diferente y eso da lugar a confusión, entonces estaría de acuerdo con usted, de lo contrario, no veo su comentario "... no inspira confianza ..." muy constructivo en absoluto. Prefiero animarle a que publique su propia respuesta "inspiradora de confianza".Hola, esto se debe a la nueva versión de jQuery => 1.9.0
puede consultar la actualización: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser está obsoleto. puede mantener la última versión agregando un script de migración: http://code.jquery.com/jquery-migrate-1.0.0.js
reemplazar:
por:
en su página y su funcionamiento.
fuente
Los eventos globales también están en desuso.
Aquí hay un parche, que corrige los problemas del navegador y del evento:
fuente
En caso de que alguien todavía tenga que admitir el fancybox heredado con jQuery 3.0+, aquí hay algunos otros cambios que deberá realizar:
.unbind () obsoleto
Reemplazar todas las instancias de
.unbind
con.off
.removeAttribute () no es una función
Cambie las líneas 580-581 para usar jQuery en su
.removeAttr()
lugar:Código antiguo:
Nuevo código:
Esto combinado con el otro parche mencionado anteriormente resolvió mis problemas de compatibilidad.
fuente