Fancybox rompt avec le nouveau jQuery v1.9.0.
Il affecte à la fois Fancybox v1.3.4 et inférieur - et - v2.1.3 et inférieur.
Les erreurs affichées sont:
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
... autres erreurs
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'
Dans la 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 vous utilisez ceci pour appeler jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... n'importe laquelle de vos implémentations de fancybox existantes échouera !!
jquery-latest.js
en production!Réponses:
Il semble qu'il existe un bogue dans jQuery signalé ici: http://bugs.jquery.com/ticket/13183 qui casse le script Fancybox.
Consultez également https://github.com/fancyapps/fancyBox/issues/485 pour plus d'informations.
Pour contourner le problème, revenez à jQuery v1.8.3 pendant que le bogue jQuery est corrigé ou que Fancybox est corrigé.
MISE À JOUR (16 janvier 2013): Fancybox v2.1.4 a été publié et fonctionne maintenant correctement avec jQuery v1.9.0.
Pour fancybox v1.3.4, vous devez toujours revenir à jQuery v1.8.3 ou appliquer le script de migration comme indiqué par la réponse de @ Manu.MISE À JOUR (17 janvier 2013): solution de contournement pour les utilisateurs de Fancybox v1.3.4 :
Patcher le fichier js FancyBox pour le faire fonctionner avec jQuery v1.9.0 comme suit:
Trouvez autour de la ligne 29 où il est dit:
et remplacez-le par ( EDITED 19 mars 2013: filtre plus précis):
MISE À JOUR (19 mars 2013): Remplacez également
$.browser.msie
par lanavigator.userAgent.match(/msie [6]/i)
ligne 615 (et / ou remplacez toutes les$.browser.msie
instances, le cas échéant), merci joofow ... c'est tout!Ou téléchargez la version déjà corrigée ICI (MISE À JOUR le 19 mars 2013 ... merci fairylee pour avoir signalé le crochet de fermeture supplémentaire)
REMARQUE : il s'agit d'un patch non officiel et n'est pas pris en charge par l'auteur de Fancybox, mais il fonctionne tel quel. Vous pouvez l'utiliser à vos propres risques;)
Si vous le souhaitez, vous pouvez plutôt revenir à jQuery v1.8.3 ou appliquer le script de migration comme indiqué par la réponse de @ Manu.
la source
/msie [6]/i
? - La classe de caractères[6]
est exactement équivalente au caractère6
, c'est-à-dire sans les crochets. Cela n'inspire pas beaucoup confiance dans le code…: /[6-8]
et dans ce cas, cela s'est simplement passé comme[6]
, à la fin, c'est juste une convention de syntaxe. Quoi qu'il en soit, s'ils sont "exactement équivalents", comment cela affecte-t-il la confiance dans le code?!?! Si le résultat avec ou sans crochets était différent et que cela laisse place à la confusion, alors je serais d'accord avec vous, sinon je ne vois pas votre commentaire "... n'inspire pas confiance ..." du tout très constructif. Je vous encourage plutôt à publier votre propre réponse «inspirante».Salut, cela est dû à la nouvelle version du jQuery => 1.9.0
vous pouvez vérifier la mise à jour: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser est obsolète. vous pouvez conserver la dernière version en ajoutant un script de migration: http://code.jquery.com/jquery-migrate-1.0.0.js
remplacer:
par :
dans votre page et son fonctionnement.
la source
Les événements globaux sont également obsolètes.
Voici un correctif qui corrige les problèmes de navigateur et d'événements:
la source
Si quelqu'un doit encore prendre en charge l'ancienne fancybox avec jQuery 3.0+, voici quelques autres modifications que vous devrez apporter:
.unbind () obsolète
Remplacez toutes les instances de
.unbind
par.off
.removeAttribute () n'est pas une fonction
Modifiez les lignes 580-581 pour utiliser jQuery à la
.removeAttr()
place:Ancien code:
Nouveau code:
Ceci combiné avec l'autre patch mentionné ci-dessus a résolu mes problèmes de compatibilité.
la source