Internet Explorer 11检测

我知道IE 11具有不同于所有其他IE的用户代理string

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');

任何人有任何想法呢?

编辑2016年11月18日

此代码也适用于( 对于那些喜欢另一种解决scheme,而不使用ActiveX

 var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; // true on IE11 // false on Edge and other IEs/browsers. 

原始答复

为了检查Ie11,你可以使用这个:(testing)

(或者运行这个 )

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

我有IE的所有VMS:

在这里输入图像描述

在这里输入图像描述

在这里输入图像描述

在这里输入图像描述

注意:这不会为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/') > 0){ /* Microsoft Internet Explorer detected in. */ } 

所有上述答案都忽略了你提到你没有窗口或导航的事实:-)

然后,我在IE11中打开开发者控制台

那就是它说的地方

找不到对象,需要重新评估。

和导航,窗口,控制台,他们都不存在,需要重新评估。 我已经在模拟。 只需closures并打开控制台几次。

我使用以下函数来检测IE的版本9,10和11:

 function ieVersion() { var ua = window.navigator.userAgent; if (ua.indexOf("Trident/7.0") > 0) return 11; else if (ua.indexOf("Trident/6.0") > 0) return 10; else if (ua.indexOf("Trident/5.0") > 0) 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> 

使用此RegExp似乎适用于IE 10和IE 11:

 function isIE(){ return /Trident\/|MSIE/.test(window.navigator.userAgent); } 

我没有IE 10以上的IE来testing这个。

这个链接是有帮助的 。 它包含了JavaScript代码来检测到IE11的所有版本。 我用IE11模拟器testing了脚本。 要查找IE11模拟器,请右键单击Web浏览器,然后单击“检查元素”。 在页面的左下方,向下滚动导航栏并单击桌面图标。 “用户代理string”下拉框包含模拟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>