2015-06-17 2 views
1

Я бегу 7 Windows (64 бит) с IE 11 enter image description hereКак правильно определить IE11 или более позднюю версию?

, имеющий следующий navigator.userAgent:

"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; 
.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; 
.NET4.0C; .NET4.0E)" 

Я хочу, чтобы быть в состоянии обнаружить версию IE, прежде чем я могу отобразить что-либо на мой сайт. Другими словами, компания, с которой я работаю, обновила большинство компьютеров для запуска IE11 или Chrome. Но на некоторых компьютерах все еще есть IE9.

Я хочу, чтобы мой сайт работал правильно для людей, работающих под IE11 или хром. Любая другая версия браузера должна быть обнаружена, и пользователь сообщил об обновлении своей машины.

Весь код, который я нашел на ссылках SO v11, является частью строки userAgent, но здесь это не так.

Edit: Я также попытался:

var isIE11 = !!(navigator.userAgent.match(/Trident/) 
      && !navigator.userAgent.match(/MSIE/)); 
     //value is false in IE6/IE9/IE11 

var isIE11 = !!(navigator.userAgent.match(/Trident/) 
       && navigator.userAgent.match(/rv 11/)); 
      //value is false in IE6/IE9/IE11 

var isIE11 = !(window.ActiveXObject) && "ActiveXObject" in window; 
      //value is false in IE6/IE9/IE11 

Что можно сделать, чтобы обнаружить IE11?

Редактировать 2: эта ссылка http://kangax.github.io/compat-table/es6/ имеет возможность проверить функцию hoisted ..., которая работает только на IE11. Так что я попытался это: enter image description here

{ function f() { return 1; } } 
    function g() { return 1; } 
{ function g() { return 2; } } 
{ function h() { return 1; } } 
    function h() { return 2; } 

alert(f() === 1 && g() === 2 && h() === 1); // alerts false in all ie versions 
+0

Вероятно, это могло бы помочь http://stackoverflow.com/questions/18907131/detecting-ie11-using-css-properties – Vincent1989

+0

@ Vincent1989 спасибо, но я уже был на этот ответ. Мой случай уникален. У меня есть 11, но userAgent ничего не говорит об этом. Поэтому для меня это не работает – Ahmad

+0

Почему вы хотите определить тип/версию браузера? Рекомендуемый способ - обнаружить функции и только реализовать их, если они доступны. См. Также http://stackoverflow.com/questions/21391593/what-is-a-reliable-way-to-detect-a-clients-browser-and-its-version-number/21465991#21465991 – Xotic750

ответ

2

Если только IE браузеры подключения к странице, а затем проверить hoisted block-level function declaration, как только поддерживается в IE11 +

function hoistTest() { 
 
    // Note: only available outside of strict mode. 
 
    { function f() { return 1; } } 
 
     function g() { return 1; } 
 
    { function g() { return 2; } } 
 
    { function h() { return 1; } } 
 
     function h() { return 2; } 
 
    
 
    return f() === 1 && g() === 2 && h() === 1; 
 
} 
 

 
document.getElementById('out').appendChild(document.createTextNode('hoisted block-level function declaration: ' + hoistTest()));
<pre id="out"></pre>

Update: скриншот этого работает на IE11 enter image description here

1

Это возвращает истину только в IE11:

!(window.ActiveXObject) && "ActiveXObject" in window 
+0

Пробовал это. Дал 'false' во всех версиях IE, на которых я тестировался. Я обновил свой вопрос, чтобы дать эту информацию – Ahmad

-1

Убедитесь, что Trident версия двигателя 7,0; более ранние версии Internet Explorer имеют более ранние версии Trident.

Примеры:

  • Internet Explorer 10 имеет Trident 6,0
  • Internet Explorer 9 имеет Trident 5.0

Источник: https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx

Обратите внимание, что вы должны проявлять особую осторожность в отношении версии для Internet Explorer для настольных ПК (мобильные телефоны Lumia, Xbox и т. д.).

Кроме того, новейшая версия браузера Microsoft, Edge, больше не использует версию Trident.

+0

userAgent для моего ie11 возвращает строку, содержащую Trident/7, и это также происходит, когда я запускаю ie7 (я снова получаю Trident/7) для ie7 – Ahmad

-1

В IE вы можете получить доступ к свойству documentMode на document, который вернет версию IE.

Чтобы проверить на 11 и больше, вы можете использовать следующее:

document.documentMode > 10 
Смежные вопросы