如何仅使用JavaScript定位Internet Explorer 11?

dav*_*010 55 javascript browser internet-explorer internet-explorer-11

使用JavaScript定位IE11的最不容易出错的方法是什么?

注意:这应该仅用于分析或通知用户他们正在使用的浏览器.对于其他一切,都有特征检测.

Den*_*ret 85

IE 11的User-agent字符串当前是这样的:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)

Windows 10示例:

Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)

这意味着您可以简单地测试版本11.xx,

var isIE11 = /Trident.*rv[ :]*11\./.test(navigator.userAgent);
Run Code Online (Sandbox Code Playgroud)

作为IE10用户代理

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Run Code Online (Sandbox Code Playgroud)

押注现在Trident/X应该是真正版本的事实可能也是安全的.

  • 我通过modern.ie虚拟地使用IE,在IE 11.0.9600.x中,rv与版本号之间实际上有冒号,而不是空格:`Mozilla/5.0(Windows NT 6.1; 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; rv:11.0)像Gecko`必须切换到这个正则表达式:`!! navigator. userAgent.match(/Trident.*rv [:]?11\./)` (5认同)
  • trident是指MSHTML的版本,rv是IE版本 (4认同)
  • 在胜利7,IE 11它抛出假. (4认同)

dav*_*010 26

IE11在它的UA字符串中保留"Trident",但是删除了MSIE.一种检测浏览器的简单方法是IE11或以上(IE12,IE13等):

var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));
Run Code Online (Sandbox Code Playgroud)

如果您想要IE11(并且您不希望将来的IE版本匹配),请执行以下操作:

var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
Run Code Online (Sandbox Code Playgroud)