Fancybox rompe com o novo jQuery v1.9.0.
Afeta ambos, Fancybox v1.3.4 e inferior - e - v2.1.3 e inferior.
Os erros mostrados são:
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
... outros erros
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'
Na 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
Se você estiver usando isso para chamar jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... qualquer uma de suas implementações sofisticadas existentes irá falhar !!
jquery-latest.js
em produção!Respostas:
Parece que existe um bug no jQuery relatado aqui: http://bugs.jquery.com/ticket/13183 que quebra o script Fancybox.
Verifique também https://github.com/fancyapps/fancyBox/issues/485 para mais referências.
Como solução alternativa, reverta para o jQuery v1.8.3 enquanto o bug do jQuery é corrigido ou o Fancybox é corrigido.
ATUALIZAÇÃO (16 de janeiro de 2013): Fancybox v2.1.4 foi lançado e agora funciona bem com jQuery v1.9.0.
Para o fancybox v1.3.4- você ainda precisa reverter para o jQuery v1.8.3 ou aplicar o script de migração conforme apontado pela resposta de @ Manu.ATUALIZAÇÃO (17 de janeiro de 2013): Solução alternativa para usuários do Fancybox v1.3.4 :
Faça o patch do arquivo fancybox js para fazê-lo funcionar com jQuery v1.9.0 da seguinte maneira:
Encontre ao redor da linha 29 onde diz:
e substitua-o por ( EDITADO em 19 de março de 2013: filtro mais preciso):
ATUALIZAÇÃO (19 de março de 2013): Substitua também
$.browser.msie
pelanavigator.userAgent.match(/msie [6]/i)
linha 615 (e / ou substitua todas as$.browser.msie
instâncias, se houver), obrigado joofow ... é isso!Ou baixe a versão já corrigida de AQUI (ATUALIZADO em 19 de março de 2013 ... obrigado fairylee por apontar o colchete de fechamento extra)
NOTA : este é um patch não oficial e não é suportado pelo autor do Fancybox, mas funciona como está. Você pode usá-lo por sua própria conta e risco;)
Opcionalmente, você pode reverter para o jQuery v1.8.3 ou aplicar o script de migração conforme apontado pela resposta de @ Manu.
fonte
/msie [6]/i
? - A classe do personagem[6]
é exatamente equivalente ao personagem6
, ou seja, sem os colchetes. Isso não inspira muita confiança no código…: /[6-8]
e, neste caso, foi[6]
apenas uma convenção de sintaxe no final. De qualquer forma, se eles são "exatamente equivalentes", como isso afeta a confiança no código?!?! Se o resultado com ou sem colchetes fosse diferente e isso deixasse espaço para confusão, então eu concordaria com você, caso contrário, não vejo seu comentário "... não inspira confiança ..." muito construtivo. Eu preferiria encorajá-lo a postar sua própria resposta "inspiradora".Olá, isso é devido à nova versão do jQuery => 1.9.0
você pode verificar a atualização: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser está obsoleto. você pode manter a versão mais recente adicionando um script de migração: http://code.jquery.com/jquery-migrate-1.0.0.js
substituir:
de :
em sua página e seu funcionamento.
fonte
Os eventos globais também estão obsoletos.
Este é um patch que corrige os problemas do navegador e de eventos:
fonte
No caso de alguém ainda ter que suportar o fancybox legado com jQuery 3.0+, aqui estão algumas outras mudanças que você terá que fazer:
.unbind () obsoleto
Substitua todas as instâncias de
.unbind
por.off
.removeAttribute () não é uma função
Altere as linhas 580-581 para usar o jQuery
.removeAttr()
:Código antigo:
Novo Código:
Isso combinado com o outro patch mencionado acima resolveu meus problemas de compatibilidade.
fonte