Когда я хочу обнаружить IE, я использую этот код:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Но IE11 возвращает «Вы не используете Internet Explorer». Как я могу это обнаружить?
Ответы:
IE11 больше не сообщает как
MSIE
, согласно этому списку изменений , намеренно избегать неправильного обнаружения.Что вы можете сделать, если вы действительно хотите знать, что это IE, - это обнаружить
Trident/
строку в пользовательском агенте, еслиnavigator.appName
возвращаетсяNetscape
, что-то вроде (непроверенное);Обратите внимание, что IE11 (afaik) все еще находится в предварительном просмотре, и пользовательский агент может измениться перед выпуском.
источник
it's intentional to avoid mis-detection
- К сожалению, теперь, когда IE11 выпущен, у нас есть код, который не работает только в IE11, тогда как правильное определение IE сработало бы ...function isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); }
var isIE11 = !!navigator.userAgent.match(/Trident\/7\./);
источникиспользование
!(window.ActiveXObject) && "ActiveXObject" in window
для явного определения IE11.Чтобы обнаружить любую версию IE (pre-Edge, «Trident»), используйте
"ActiveXObject" in window
вместо этого.источник
window.ActiveXObject
, как описано в статье,undefined
теперь возвращается в IE11 (а также в браузерах, не принадлежащих Microsoft). Тест с использованиемin
оператора javascript возвращаетtrue
во всех браузерах Microsoft, поэтому оба случая строго относятся к IE11. Если Microsoft выдаст изменение в поведенииin
оператора, да, этот метод сломается.Использовать
MSInputMethodContext
как часть проверки функции обнаружения. Например:Ссылки
источник
#false
в не-IE, IE8,9,10, Edge 14,15.#true
только в IE11. Не тестировал с активным режимом документа. Протестировано с Browserstack.Я прочитал ваши ответы и сделал микс. Кажется, он работает с Windows XP (IE7 / IE8) и Windows 7 (IE9 / IE10 / IE11).
Конечно, если я верну 0, значит, нет IE.
источник
Получить версию IE от User-Agent
Как это работает: Строка user-agent для всех версий IE включает в себя часть « Пространственная версия MSIE » или «Trident other-text rv space-or-colon version ». Зная это, мы берем номер версии из
String.match()
регулярного выражения.try-catch
Блок используется для сокращения кода, в противном случае мы должны были бы проверить границы массива для не-IE браузеров.Примечание . Пользовательский агент может быть подделан или опущен, иногда непреднамеренно, если пользователь установил в своем браузере «режим совместимости». Хотя это не кажется большой проблемой на практике.
Получить версию IE без User-Agent
Как это работает: в каждой версии IE добавлена поддержка дополнительных функций, отсутствующих в предыдущих версиях. Таким образом, мы можем проверить функции в нисходящем порядке. Тройная последовательность используется здесь для краткости, хотя
if-then
иswitch
заявления будут работать так же хорошо. Переменнаяie
установлена в целое число 5-11, или 1 для старшего, или 99 для более нового / не IE. Вы можете установить его на 0, если вы просто хотите точно протестировать IE 1-11.Примечание. Обнаружение объектов может прерваться, если ваш код запускается на странице со сторонними сценариями, которые добавляют полифиллы для подобных вещей
document.addEventListener
. В таких ситуациях пользовательский агент является лучшим вариантом.Определить, является ли браузер современным
Если вас интересует только то, поддерживает ли браузер большинство стандартов HTML 5 и CSS 3, вы можете разумно предположить, что IE 8 и ниже остаются основными проблемами приложений. Тестирование
window.getComputedStyle
также даст вам довольно хорошее сочетание современных браузеров (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). В IE 9 значительно улучшена поддержка стандартов, но для нативной CSS-анимации требуется IE 10.источник
var ie = 0; try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; } catch(e){} if (ie !== 0) { location.href = "../ie-redirect/redirect.html"; }
Angular JS делает это так.
msie будет положительным числом, если его IE и NaN для другого браузера, такого как chrome, firefox.
Зачем ?
Начиная с Internet Explorer 11, строка user-agent значительно изменилась.
отослать это:
MSDN # 1 MSDN # 2
источник
решение :
источник
This is IE 0
Я использую более простой метод:
Глобальный объект навигатора имеет свойство touchpoints, в Internet Exlorer 11 он называется msMaxTouchPoints tho.
Так что если вы ищете:
Вы найдете Internet Explorer 11.
источник
источник
Попробуй это:
источник
!navigator.userAgent.match("Acoo Browser;") && navigator.userAgent.match(/MSIE/i) ? true : false
но это не всегда работает, потому что браузер Acoo не всегда имеет "Браузер Acoo;" в его useragent, но на самом деле вам не нужно заботиться о том, чтобы браузер acoo содержал MSIE в своем useragent, потому что браузер acoo почти тот же.Похоже, это лучший метод. indexOf возвращает -1, если ничего не найдено. Он не переписывает существующие классы на теле, просто добавляет их.
источник
Определить большинство браузеров с этим:
https://gist.github.com/earlonrails/5266945
источник
Я использовал
onscroll
событие в элементе с полосой прокрутки. При запуске в IE я добавил следующую проверку:источник
Только для браузера IE:
использовать оповещение (т.е.);
Тестирование:
Обновление 01 июня 2017
Теперь мы могли бы использовать что-то проще и проще:
источник
Откровенно говоря, я бы сказал, используйте библиотеку, которая делает то, что вам нужно (например, platform.js). В какой-то момент все изменится, и библиотека будет оборудована для этих изменений, и ручной анализ с использованием регулярных выражений не удастся.
Слава богу, IE уходит ...
источник