Fancybox выходит из строя с новым jQuery v1.9.0.
Это касается как Fancybox v1.3.4 и ниже - и - v2.1.3 и ниже.
Показаны следующие ошибки:
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
... другие ошибки
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'
В 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
Если вы используете это для вызова jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
... любая из ваших существующих реализаций fancybox не удастся !!
jquery-latest.js
в производстве!Ответы:
Похоже, что существует ошибка в jQuery, о которой сообщается здесь: http://bugs.jquery.com/ticket/13183, которая нарушает работу сценария Fancybox.
Также проверьте https://github.com/fancyapps/fancyBox/issues/485 для получения дополнительной информации.
В качестве обходного пути откатитесь к jQuery v1.8.3, пока ошибка jQuery исправлена или Fancybox исправлен.
ОБНОВЛЕНИЕ (16 января 2013 г.): выпущен Fancybox v2.1.4 , и теперь он отлично работает с jQuery v1.9.0.
Для fancybox v1.3.4 - вам все равно нужно откатиться до jQuery v1.8.3 или применить сценарий миграции, как указано в ответе @ Manu.ОБНОВЛЕНИЕ (17 января 2013 г.): обходной путь для пользователей Fancybox v1.3.4 :
Патч - файл FancyBox Js , чтобы заставить его работать с JQuery v1.9.0 как следующим образом :
Найдите строку 29, где написано:
и замените его на ( ИЗМЕНИТЬ 19 марта 2013 г .: более точный фильтр):
UPDATE (19 марта 2013): Также заменить
$.browser.msie
наnavigator.userAgent.match(/msie [6]/i)
вокруг линии 615 (и / или заменить все$.browser.msie
экземпляры, если таковые имеются), благодаря joofow ... вот оно!Или скачайте уже исправленную версию ЗДЕСЬ (ОБНОВЛЕНО 19 марта 2013 г. ... спасибо Fairylee за указание на дополнительную закрывающую скобку)
ПРИМЕЧАНИЕ : это неофициальный патч, он не поддерживается автором Fancybox, но работает как есть. Вы можете использовать его на свой страх и риск;)
При желании вы можете вернуться к jQuery v1.8.3 или применить сценарий миграции, как указано в ответе @ Manu.
источник
/msie [6]/i
? - Класс символа[6]
в точности эквивалентен символу6
, то есть без скобок. Это не внушает особого доверия к коду…: /[6-8]
и в этом случае все прошло так[6]
, как в конце - просто синтаксическое соглашение. В любом случае, если они «точно эквивалентны», то как это повлияет на доверие к коду?!?! Если результат с квадратными скобками или без них был другим, и это вызывает путаницу, я бы согласился с вами, иначе я не считаю ваш комментарий «... не внушает доверия ...» очень конструктивным. Я бы посоветовал вам опубликовать свой собственный «внушающий доверие» ответ.Привет, это связано с новой версией jQuery => 1.9.0
вы можете проверить обновление: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/
jQuery.Browser устарел. вы можете сохранить последнюю версию, добавив скрипт миграции: http://code.jquery.com/jquery-migrate-1.0.0.js
заменить:
по :
на вашей странице и ее работе.
источник
Глобальные события также устарели.
Вот патч, который устраняет проблемы с браузером и событиями:
источник
Если кому-то все еще нужно поддерживать устаревший fancybox с jQuery 3.0+, вам необходимо внести еще несколько изменений:
.unbind () устарел
Заменить все экземпляры
.unbind
с.off
.removeAttribute () не является функцией
Измените строки 580-581, чтобы
.removeAttr()
вместо этого использовать jQuery :Старый код:
Новый код:
Это в сочетании с другим патчем, упомянутым выше, решило мои проблемы с совместимостью.
источник