Экспромт.. с 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

Ответ 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());

Прекрасно работает для меня;