如何正确检测IE11或更高版本?

时间:2015-06-17 07:11:41

标签: javascript internet-explorer internet-explorer-11

我正在使用IE 11运行Windows 7(64位) enter image description here

拥有以下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或Chrome的用户正常运行。应检测任何其他版本的浏览器,并通知用户更新他的机器。

我在SO引用v11上找到的所有代码都是userAgent字符串的一部分,但这不是这里的情况。

编辑:我也尝试过:

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/可以检查仅在IE11上运行的hoisted ...功能。所以我也试过这个: 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

4 个答案:

答案 0 :(得分:2)

如果只有IE浏览器连接到该页面,则仅在IE11 +中支持hoisted block-level function declaration测试

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>

更新:在IE11上工作的截图 enter image description here

答案 1 :(得分:1)

仅在IE11中返回true:

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

答案 2 :(得分:-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

请注意,您必须特别注意非桌面PC Internet Explorer版本(Lumia手机,Xbox等)。

此外,最新版本的Microsoft浏览器 Edge ,不再使用Trident版本。

答案 3 :(得分:-1)

在IE中,您可以访问documentMode上的document属性,该属性将返回IE的版本。

要测试11或更高版本,您可以使用以下内容:

document.documentMode > 10