Fancybox putus dengan jQuery v1.9.0 baru.
Ini memengaruhi keduanya, Fancybox v1.3.4 dan yang lebih lama - dan - v2.1.3 ke bawah.
Kesalahan yang ditampilkan adalah:
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
... kesalahan lainnya
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'
Di 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
Jika Anda menggunakan ini untuk memanggil jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... salah satu implementasi fancybox Anda yang ada akan gagal !!
jquery-latest.js
dalam produksi!Jawaban:
Sepertinya ada bug di jQuery yang dilaporkan di sini: http://bugs.jquery.com/ticket/13183 yang merusak skrip Fancybox.
Juga periksa https://github.com/fancyapps/fancyBox/issues/485 untuk referensi lebih lanjut.
Sebagai solusinya, kembalikan ke jQuery v1.8.3 saat bug jQuery diperbaiki atau Fancybox ditambal.
PEMBARUAN (Jan 16, 2013): Fancybox v2.1.4 telah dirilis dan sekarang berfungsi dengan baik dengan jQuery v1.9.0.
Untuk fancybox v1.3.4- Anda masih perlu melakukan rollback ke jQuery v1.8.3 atau menerapkan file skrip migrasi seperti yang ditunjukkan oleh jawaban @ Manu.UPDATE (17 Jan 2013): Solusi untuk pengguna Fancybox v1.3.4 :
Tambal file file js fancybox agar berfungsi dengan jQuery v1.9.0 sebagai berikut:
Temukan di sekitar baris 29 di mana dikatakan:
dan ganti dengan ( EDITED 19 Maret 2013: filter yang lebih akurat):
UPDATE (19 Maret 2013): Juga ganti
$.browser.msie
dengannavigator.userAgent.match(/msie [6]/i)
sekitar baris 615 (dan / atau ganti semua$.browser.msie
contoh, jika ada), terima kasih joofow ... itu saja!Atau unduh versi yang sudah ditambal dari SINI (DIPERBARUI 19 Maret 2013 ... terima kasih fairylee karena menunjukkan braket penutup ekstra)
CATATAN : ini adalah tambalan tidak resmi dan tidak didukung oleh penulis Fancybox, namun berfungsi sebagaimana mestinya. Anda dapat menggunakannya dengan risiko Anda sendiri;)
Secara opsional, Anda lebih suka melakukan rollback ke jQuery v1.8.3 atau menerapkan skrip migrasi seperti yang ditunjukkan oleh jawaban @ Manu.
sumber
/msie [6]/i
? - Kelas karakter[6]
sama persis dengan karakter6
, yaitu tanpa tanda kurung. Itu tidak menginspirasi banyak kepercayaan pada kode…: /[6-8]
dan dalam hal ini hanya berjalan sebagai[6]
, pada akhirnya hanyalah konvensi sintaksis. Bagaimanapun, jika keduanya "sama persis", lalu bagaimana hal ini memengaruhi kepercayaan pada kode?!?! Jika hasil dengan atau tanpa tanda kurung berbeda dan menimbulkan kebingungan, maka saya setuju dengan Anda, jika tidak, saya tidak melihat komentar "... tidak menginspirasi kepercayaan ..." Anda sangat konstruktif. Saya lebih suka mendorong Anda untuk memposting jawaban Anda sendiri yang "membangkitkan rasa percaya diri".Hai, ini karena versi baru jQuery => 1.9.0
Anda dapat memeriksa pembaruan: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser tidak digunakan lagi. Anda dapat mempertahankan versi terbaru dengan menambahkan skrip migrasi: http://code.jquery.com/jquery-migrate-1.0.0.js
ganti:
oleh :
di halaman Anda dan cara kerjanya.
sumber
Peristiwa global juga tidak berlaku lagi.
Berikut tambalan, yang memperbaiki masalah browser dan acara:
sumber
Jika ada yang masih harus mendukung fancybox lama dengan jQuery 3.0+, berikut beberapa perubahan lain yang harus Anda lakukan:
.unbind () tidak digunakan lagi
Ganti semua contoh
.unbind
dengan.off
.removeAttribute () bukanlah sebuah fungsi
Ubah baris 580-581 untuk menggunakan jQuery's
.removeAttr()
sebagai gantinya:Kode lama:
Kode baru:
Ini dikombinasikan dengan tambalan lain yang disebutkan di atas memecahkan masalah kompatibilitas saya.
sumber