Ответ 1
Окончательное решение:
if (!!navigator.userAgent.match(/Trident\/7\./))
return "ie";
Мы можем только надеяться, что версия выпуска будет действовать одинаково.
Просто наткнулся на проблему. При попытке обнаружить 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 может найти версию браузера, но не имя браузера. Любая идея, как обойти его?
Окончательное решение:
if (!!navigator.userAgent.match(/Trident\/7\./))
return "ie";
Мы можем только надеяться, что версия выпуска будет действовать одинаково.
Это по соображениям совместимости. Клиентский код часто выполняет обнаружение браузера вместо обнаружения функции (что является плохой практикой). Поэтому, чтобы убедиться, что клиенты правильно используют все возможности IE 11, Microsoft сделала это так, чтобы IE 11 сообщал о совместимости с Mozilla.
Таким образом, вместо обнаружения браузера, выполните обнаружение функции. См. Обнаружение браузера и обнаружение функций. Для этого существуют большие библиотеки, Modernizr, вероятно, наиболее известный (и Microsoft отправляет его как часть шаблонов ASP.NET в Visual Studio).
Цель jQuery Migrate - разрешить запуск старого плохо написанного кода, а не поощрять писать новый плохо написанный код. Поскольку этот старый плохо написанный код был создан задолго до того, как был выпущен IE11, он все равно не знает об IE11 и, вероятно, будет плохо себя вести. Плагин jQuery Migrate не будет изменен для обнаружения IE11. Если вы пишете новый код, не используйте обнаружение браузера. Вместо этого используйте обнаружение функций.
jQuery.browser
устарел и был удален, вы должны использовать $.support
или лучший инструмент, например Modernizr