Internet Explorer 11 检测

IT技术 javascript internet-explorer internet-explorer-11
2021-01-19 02:03:55

我知道 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');

任何人都知道吗?

6个回答

2016 年 11 月 18 日编辑

此代码也有效(对于那些更喜欢其他解决方案而不使用 ActiveX 的人

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

原答案

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

(或运行这个

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

我有 IE 的所有 VMS:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

注意:这不适用于 IE11:

正如你在这里看到的,它返回 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)

这将仅对 ie11 返回 true。

等等,有 IE12 吗?我以为 IE11 是最后一个,我们很快就不必再担心那个愚蠢的浏览器了!
2021-03-19 02:03:55
x64 返回 Chrome 和 Edge
2021-03-21 02:03:55
@简。是的。对于整个条件,只有 IE11 会返回 true。我只是表明 <11 返回 false。
2021-03-25 02:03:55
@IanSteffy 这只是为了显示操作的结果(!)。您可以打开一个 HTML 文件并添加脚本标记并在该脚本中运行该命令。在这里运行这个
2021-03-25 02:03:55
难道不是我的IE 11.0.9600.19431在Windows 7企业工作。没有window.MSInputMethodContext
2021-04-05 02:03:55

快速检测 MSIE(从版本 6 到 11):

if(navigator.userAgent.indexOf('MSIE')!==-1
|| navigator.appVersion.indexOf('Trident/') > -1){
   /* Microsoft Internet Explorer detected in. */
}
如果不是第二个indexOf()> -1
2021-03-13 02:03:55
是的,我不知道为什么它是 >0 而不是 >-1,但无论如何,“Trident/”在 appVersion 字符串中的显示要更远-
2021-03-13 02:03:55
这个答案没有专门检测 IE 11,这是 OP 所要求的
2021-03-27 02:03:55
为什么不是两者>= 0> -1应该是相同的结果,但更易读/直接。
2021-04-01 02:03:55

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

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
}  

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

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

这就是它所说的

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

和导航器,窗口,控制台,它们都不存在,需要重新评估。我在仿真中遇到过。只需关闭并打开控制台几次。

也为我工作。这就是为什么当 IE 消亡时,全世界都会有派对。
2021-03-27 02:03:55
感谢您实际阅读问题并通过重新评估回答问题。
2021-03-31 02:03:55
关闭和打开控制台对我有用。与 Firefox 或 Chrome 相比的奇怪行为(但它是 IE,所以数字。)
2021-04-02 02:03:55

检测IE 11 的一种非常安全且简洁的方法

if(window.msCrypto) {
    // I'm IE11 for sure
}

或类似的东西

var IE11= !!window.msCrypto;

msCryptowindow.crypto对象的前缀版本,仅在 IE 11 中实现。
https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto

谢谢,我使用了相反的方法:if(window.crypto)因为msCrypto没有检测到@types
2021-03-24 02:03:55
唯一可行的解​​决方案(这是最短、最干净、最优雅的解决方案)!Royi Namir's /x64|x32/ig.test(window.navigator.userAgent)也适用于 Firefox!
2021-04-05 02:03:55