Uncaught TypeError: Не удается прочитать свойство "msie" из undefined - инструменты jQuery

В консоли Chrome dev появляется следующая ошибка:

Uncaught TypeError: Cannot read property 'msie' of undefined

Я понимаю, что это потому, что .browser теперь устарел в jQuery, но я использую последнюю версию jQuery-инструментов и все еще выдаю ошибку, я проверил в файле js, и она есть.

Как я могу обойти это, чтобы он не выдавал ошибку?

Ответ 1

Метод $.browser удален из jQuery 1.9.

jQuery.browser() removed

Метод jQuery.browser() устарел с момента jQuery 1.3 и удален в 1.9. При необходимости он доступен как часть плагина jQuery Migrate. Мы рекомендуем использовать функцию обнаружения с помощью библиотеки, например Modernizr.

- Руководство по обновлению jQuery Core 1.9.

Как указано в Руководстве по обновлению, вы можете попробовать использовать плагин jQuery Migrate, чтобы восстановить эту функциональность и позволить jQuery Tools работать.

Ответ 2

Вы можете проверить это решение AJ. Это довольно просто, просто скопируйте и вставьте следующие строки кода.

jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

Ссылка

Ответ 3

Используйте следующий тег script в файле jsp/js:

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

это будет работать точно.

Ответ 4

Я использую ниже код после включения js файла и теперь он работает.

<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery.browser = {};
    (function () {
        jQuery.browser.msie = false;
        jQuery.browser.version = 0;
        if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
            jQuery.browser.msie = true;
            jQuery.browser.version = RegExp.$1;
        }
    })();
</script>

Ответ 5

Вот ошибка jQuery Tools на GitHub. Вы можете попробовать один из патчей.

edit — это не выглядит так, как если бы jQuery Tools получал большую поддержку. Я лично не стал бы начинать новый проект с зависимостью от этой библиотеки, если бы я не был готов взять на себя поддержку.

Ответ 6

Замените JS на

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

Источник ссылка

Ответ 7

Поскольку я вообще не планирую поддерживать старые версии MS IE, я просто заменил все ссылки на browser.msie на false. Нехорошее решение, я знаю, но оно работает для меня.

(На самом деле они появились как !browser.msie, которые можно было исключить из условий.)

Ответ 8

Использовать как удар

$(function (a) {

.,,. then в вашей функции вы можете использовать свойство msie, например

if (a.browser.msie) 
{
}
else 
{
   $(settings.current).after(Uploadelement);
}

Гудлак

Ответ 9

Использовать как удар

Я использую эту команду и решаю

"Uncaught TypeError: невозможно прочитать свойство msie 'of undefined" Ошибка

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
    return;
}

Ответ 10

Я получал эту ошибку при использовании JQuery 1.10 и JQuery UI 1.8. Я смог разрешить эту ошибку, обновив ее до последнего JQuery UI 1.11.4.

Шаги по обновлению пользовательского интерфейса JQuery из Visual Studio:

  • Переход к проекту или решению
  • Щелкните правой кнопкой мыши: "Управление пакетами NuGet"
  • Слева щелкните вкладку "Установленные пакеты".
  • Найдите "JQuery UI (комбинированная библиотека)" и нажмите "Обновить"
  • Если найдено, выберите его и нажмите Обновить
  • Если не найден, найдите его на вкладке "Онлайн" nuget.org слева и нажмите "Установить". Если старая версия JQuery UI по-прежнему существует, ее можно удалить из проекта

Ответ 11

Если вы задали jQuery дважды, вы можете получить эту ошибку. Например, если вы работаете с Primeface (он уже включает jQuery), и вы определяете его в другом месте.

Ответ 12

Я просто добавил

jQuery.browser = {
    msie: false,
    version: 0
};

после скрипта jquery, потому что меня больше не волнует IE.