Fancybox bricht mit der neuen jQuery v1.9.0.
Dies betrifft sowohl Fancybox v1.3.4 als auch darunter - und - v2.1.3 und darunter.
Die angezeigten Fehler sind:
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
... andere Fehler
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'
In 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
Wenn Sie damit jQuery aufrufen:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... jede Ihrer vorhandenen Fancybox-Implementierungen wird fehlschlagen !!
jquery-latest.js
in der Produktion!Antworten:
Es scheint, dass es einen Fehler in jQuery gibt, der hier gemeldet wird: http://bugs.jquery.com/ticket/13183 , der das Fancybox-Skript beschädigt.
Weitere Informationen finden Sie unter https://github.com/fancyapps/fancyBox/issues/485 .
Um dieses Problem zu umgehen , führen Sie ein Rollback auf jQuery v1.8.3 durch, während entweder der jQuery-Fehler behoben oder Fancybox gepatcht ist.
UPDATE (16. Januar 2013): Fancybox v2.1.4 wurde veröffentlicht und funktioniert jetzt einwandfrei mit jQuery v1.9.0.
Für Fancybox v1.3.4- müssen Sie noch ein Rollback auf jQuery v1.8.3 durchführen oder das Migrationsskript anwenden, wie in der Antwort von @ Manu angegeben.UPDATE (17. Januar 2013): Problemumgehung für Benutzer von Fancybox v1.3.4 :
Patchen Sie die Fancybox-JS-Datei , damit sie mit jQuery v1.9.0 wie folgt funktioniert:
Finden Sie in der Zeile 29, wo steht:
und ersetzen Sie es durch ( EDITED 19. März 2013: genauerer Filter):
UPDATE (19. März 2013): Ersetzen Sie auch
$.browser.msie
durchnavigator.userAgent.match(/msie [6]/i)
Zeile 615 (und / oder ersetzen Sie alle$.browser.msie
Instanzen, falls vorhanden), danke joofow ... das war's!Oder laden Sie die bereits gepatchte Version von HIER herunter (AKTUALISIERT am 19. März 2013 ... danke fairylee für den Hinweis auf die zusätzliche schließende Klammer)
HINWEIS : Dies ist ein inoffizieller Patch, der vom Autor von Fancybox nicht unterstützt wird, jedoch wie er ist funktioniert. Sie können es auf eigenes Risiko verwenden;)
Optional können Sie lieber ein Rollback auf jQuery v1.8.3 durchführen oder das Migrationsskript anwenden, wie in der Antwort von @ Manu angegeben.
quelle
/msie [6]/i
? - Die Zeichenklasse[6]
entspricht genau dem Zeichen6
, dh ohne die Klammern. Das[6-8]
und in diesem Fall einfach so lief[6]
, ist am Ende nur eine Syntaxkonvention. Wie auch immer, wenn sie "genau gleichwertig" sind, wie wirkt sich das dann auf das Vertrauen in den Code aus?!?! Wenn das Ergebnis mit oder ohne Klammern anders wäre und dies Raum für Verwirrung schafft, würde ich Ihnen zustimmen, sonst sehe ich Ihren Kommentar "... schafft kein Vertrauen ..." überhaupt nicht als sehr konstruktiv an. Ich möchte Sie eher ermutigen, Ihre eigene "vertrauensinspirierende" Antwort zu veröffentlichen.Hallo, das liegt an der neuen Version von jQuery => 1.9.0
Sie können das Update überprüfen: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser ist veraltet. Sie können die neueste Version beibehalten, indem Sie ein Migrationsskript hinzufügen: http://code.jquery.com/jquery-migrate-1.0.0.js
ersetzen:
durch :
in Ihrer Seite und es funktioniert.
quelle
Globale Ereignisse sind ebenfalls veraltet.
Hier ist ein Patch, der die Browser- und Ereignisprobleme behebt:
quelle
Falls noch jemand Legacy Fancybox mit jQuery 3.0+ unterstützen muss, müssen Sie einige weitere Änderungen vornehmen:
.unbind () veraltet
Ersetzen Sie alle Instanzen von
.unbind
durch.off
.removeAttribute () ist keine Funktion
Ändern Sie die Zeilen 580-581, um
.removeAttr()
stattdessen jQuery's zu verwenden:Alter Code:
Neuer Code:
Dies in Kombination mit dem anderen oben genannten Patch löste meine Kompatibilitätsprobleme.
quelle