Обнаружение Internet Explorer 11
Я знаю, что IE 11 имеет другую строку агента пользователя, чем все другие IE
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Я попытался обнаружить IE 11 с ответом, указанным для этого вопроса'
Jquery не удается обнаружить IE 11
это !!navigator.userAgent.match(/Trident/7./)
но я получаю ошибку
Object not found and needs to be re-evaluated.
затем я открываю консоль разработчика в IE11 и пытаюсь получить доступ к некоторым предопределенным объектам javascript, я все еще получаю ту же ошибку.
у меня есть пробовал
navigator.userAgent
window.navigator
console.log('test');
кто-нибудь знает об этом ?
8 ответов:
Редактировать 18 Ноября 2016
этот код также будет работать (для тех, кто предпочитает другое решение, без использования ActiveX)
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; // true on IE11 // false on Edge and other IEs/browsers.Оригинальный Ответ
для того, чтобы проверить Ie11, вы можете использовать это : (tested)
(или этой)
!(window.ActiveXObject) && "ActiveXObject" in windowу меня есть все виртуальные машины IE :
обратите внимание : это не будет работать для IE12:
как вы можете видеть здесь , он возвращает true :
что мы можем сделать :
видимо , они добавили машине немного места :
ie11:
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"ie12 :
"Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"так что мы можем сделать:
/x64|x32/ig.test(window.navigator.userAgent)это вернется правда только для ie12.
для быстрого обнаружения MSIE (от версии 6 до 11):
if(navigator.userAgent.indexOf('MSIE')!==-1 || navigator.appVersion.indexOf('Trident/') > -1){ /* Microsoft Internet Explorer detected in. */ }
все вышеперечисленные ответы игнорируют тот факт, что вы упоминаете, что у вас нет окна или навигатора : -)
затем я открываю консоль разработчика в IE11
и вот где он говорит
объект не найден и нуждается в повторной оценке.
и навигатор, окно, консоль, ни один из них не существует и должны быть повторно оценены. У меня было это в эмуляции. просто закройте и откройте консоль несколько раз.
Я использую следующую функцию для обнаружения версии 9, 10 и 11 IE:
function ieVersion() { var ua = window.navigator.userAgent; if (ua.indexOf("Trident/7.0") > -1) return 11; else if (ua.indexOf("Trident/6.0") > -1) return 10; else if (ua.indexOf("Trident/5.0") > -1) return 9; else return 0; // not IE9, 10 or 11 }
и как я это реализовал
<script type="text/javascript"> !(window.ActiveXObject) && "ActiveXObject" function isIE11(){ return !!navigator.userAgent.match(/Trident.*rv[ :]*11\./); } </script>
эта ссылка была полезна . Он содержит код javascript для обнаружения всех версий IE до IE11. Я тестировал скрипт с помощью эмулятора IE11. Чтобы найти эмулятор IE11, щелкните правой кнопкой мыши на веб-браузере нажмите кнопку "Проверить элемент". В левом нижнем углу страницы прокрутите панель навигации вниз и щелкните значок рабочего стола. Раскрывающийся список "строка агента пользователя" содержит параметры для эмуляции IE6-11.
это работает. Я просто использовал его за несколько минут до написания этого ответа. Не удается опубликовать снимки-недостаточно репутации.
Это код-перейдите по ссылке, чтобы просмотреть его снова:
// Get IE or Edge browser version var version = detectIE(); if (version === false) { document.getElementById('result').innerHTML = '<s>IE/Edge</s>'; } else if (version >= 12) { document.getElementById('result').innerHTML = 'Edge ' + version; } else { document.getElementById('result').innerHTML = 'IE ' + version; } // add details to debug result document.getElementById('details').innerHTML = window.navigator.userAgent; /** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; // Test values; Uncomment to check result … // IE 10 // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'; // IE 11 // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'; // Edge 12 (Spartan) // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'; // Edge 13 // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586'; var msie = ua.indexOf('MSIE '); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); } var trident = ua.indexOf('Trident/'); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf('rv:'); return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); } var edge = ua.indexOf('Edge/'); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); } // other browser return false; }@import url(https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans:300); body { color: black; background-color: white; font-family: "Fira Sans", sans-serif; font-weight: 300; margin: 0; padding: 3rem; } h1 { color: darkgrey; text-align: center; font-weight: 300; font-size: 1.5rem; line-height: 2rem; } h2 { text-align: center; font-weight: 300; font-size: 4rem; } p { color: darkgrey; text-align: center; font-family: "Fira Mono", monospace; font-size: 1rem; line-height: 1.5rem; }<h1>Detect IE/Edge version with JavaScript.<br> Updated to recognize Internet Explorer 12+ aka Edge.</h1> <h2 id="result">detecting…</h2> <p id="details">n/a</p>
используя это регулярное выражение, кажется, работает для IE 10 и IE 11:
function isIE(){ return /Trident\/|MSIE/.test(window.navigator.userAgent); }У меня нет IE старше IE 10, чтобы проверить это.
Использовать Навигатор:-
The
navigator- это объект, содержащий всю информацию о браузере клиентской машины.
navigator.appNameвозвращает имя браузера клиентской машины.navigator.appName === 'Microsoft Internet Explorer' || !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie === 1) ? alert("Please dont use IE.") : alert("This is not IE")<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>





Comments