JQuery не обнаруживает IE 11

Просто наткнулся на проблему. При попытке обнаружить IE 11 (бета-версия в настоящее время в эфире) с использованием Jquery результатом является "firefox". Тот же код обнаруживает IE 10. Мне нужно знать, какой браузер используется пользователем, чтобы отображать разные инструкции.

Я тестирую в Oracle VirtualBox, если это имеет значение. ОС - Win 7.

Здесь код:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
var browser = function() { 
if ($.browser.msie) return "ie";
var ua = navigator.userAgent.toLowerCase();
if ($.browser.mozilla/* && /firefox/.test(ua)*/) return "firefox"; 
if (/chrome/.test(ua)) return "chrome";
return /*"#"*/'unknown';
} ();

alert (browser); // This return firefox
alert ($.browser.version); // This returns 11.0 - the CORRECT version of IE
</script>

Как вы можете видеть, JQuery может найти версию браузера, но не имя браузера. Любая идея, как обойти его?

Ответ 1

Окончательное решение:

if (!!navigator.userAgent.match(/Trident\/7\./))
  return "ie";  

Мы можем только надеяться, что версия выпуска будет действовать одинаково.

Ответ 2

Это по соображениям совместимости. Клиентский код часто выполняет обнаружение браузера вместо обнаружения функции (что является плохой практикой). Поэтому, чтобы убедиться, что клиенты правильно используют все возможности IE 11, Microsoft сделала это так, чтобы IE 11 сообщал о совместимости с Mozilla.

Таким образом, вместо обнаружения браузера, выполните обнаружение функции. См. Обнаружение браузера и обнаружение функций. Для этого существуют большие библиотеки, Modernizr, вероятно, наиболее известный (и Microsoft отправляет его как часть шаблонов ASP.NET в Visual Studio).

См. Блог MSDN об IE 11 User Agent Strings.

Ответ 3

Цель jQuery Migrate - разрешить запуск старого плохо написанного кода, а не поощрять писать новый плохо написанный код. Поскольку этот старый плохо написанный код был создан задолго до того, как был выпущен IE11, он все равно не знает об IE11 и, вероятно, будет плохо себя вести. Плагин jQuery Migrate не будет изменен для обнаружения IE11. Если вы пишете новый код, не используйте обнаружение браузера. Вместо этого используйте обнаружение функций.

Ответ 4

jQuery.browser устарел и был удален, вы должны использовать $.support или лучший инструмент, например Modernizr