Экспромт.. с jquery 1.9 - ошибка с browser.msie
Я получаю сообщение об ошибке с impromptu ver 4.1 при работе под последним jquery 1.9
Uncaught TypeError: Не удается прочитать свойство "msie" undefined
Это не относится к предыдущим версиям jquery.
Лицом нарушения в импровизации является строка 20:
var ie6 = ($.browser.msie && $.browser.version < 7);
Ответы
Ответ 1
Вы можете исправить Impromptu, заменив эту строку:
var ie6 = ($.browser.msie && $.browser.version < 7);
... этим:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
... так что теперь он может работать с jQuery v1.9.0+. При желании вы можете откат к jQuery v1.8.3
РЕДАКТИРОВАТЬ (12 марта 2013 г.)
Спасибо @johntrepreneur за ваши комментарии, вы правы. Две заметки:
-
Эта отредактированная строка:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
... следует заменить следующим:
var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
... мой плохой, я бросился писать патч. Это должно сделать трюк.
-
Impromptu полностью удалил поддержку IE6 в своем последнем коммите (25 марта этого года после этого оригинального сообщения). Проблема, вызванная OP, заключалась в том, что Impromptu действительно нарушил работу с jQuery v1.9 +... обновлением файла Impromptu js на последней версии, также исправляет вопрос.
Ответ 2
Я предпочитаю, чтобы этот был нацелен на диапазон, будет запускать код только на < IE9 и jQuery 1.9 +
if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
//code here
}
Ответ 3
С тех пор, как JQuery устарел от функции $.browser
самым простым способом, который я нашел, было создание глобального в javascript
var LTE_IE9 = false;
а при использовании селекторов IE IE условия
<!--[if lte IE 9]>
<script>LTE_IE9 = true;</script>
<![endif]-->
Ответ 4
Я использую его.
var browser = $.browser;
if ( ! browser ) {
var ua = navigator.userAgent.toLowerCase();
var m = /(msie) ([\w.]+)/.exec( ua ) || ! /compatible/.test(ua) && /(mozilla)/.exec( ua ) || [];
browser = { version: m[2] };
browser[ m[1] ] = true;
}
Ответ 5
добавить Jquery migrate
плагин
//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js
$.browser.msie
удален из > jquery 1.9.X
Ответ 6
Как сказано здесь, $. browser больше не существует в jQuery, так как версия 1.9.
Итак, проверьте ошибку browser.msie после обновления до jQuery 1.9.1
Ответ 7
поскольку $.browse устарел после jQuery V. 1.4 и удаляется после jQuery V. 1.9
все же вы можете исправить эту проблему с помощью этой строки кода (для всех браузеров)
jQuery.browser = {};
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());
Прекрасно работает для меня;