如何使用 JavaScript 仅针对 Internet Explorer 11?

IT技术 javascript internet-explorer browser internet-explorer-11
2021-02-06 17:44:11

使用 JavaScript 仅针对 IE11 的最不容易出错的方法是什么?

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

6个回答

IE 11 的用户代理字符串目前是这样的:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

Windows 10 示例:

Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko

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

var isIE11 = /Trident.*rv[ :]*11\./.test(navigator.userAgent);

由于IE10 用户代理是

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

可以肯定的是,现在Trident/X应该是真正的版本控制。

我实际上是通过现代.ie 和 IE 11.0.9600.x 使用 IE,在 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) like Gecko不得不切换到这个正则表达式:!!navigator.userAgent.match(/Trident.*rv[ :]?11\./)
2021-03-24 17:44:11
在 win 7、IE 11 上,它抛出错误。
2021-03-30 17:44:11
我将如何检查“如果 IE11 及更高版本”?这行得通吗?!!navigator.userAgent.match(/Trident.*rv[ :]?[1-9]{2}\./)正则表达式不是我的强项,但出于兼容性原因使用它并希望代码在我的 if 语句中执行,如果它是 IE12、IE13 等。
2021-04-05 17:44:11
注意:这不适用于 64 位 Windows 8.1 更新桌面上的 IE11,并启用兼容性视图。请参阅msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx
2021-04-06 17:44:11
三叉戟指的是MSHTML版本,rv是IE版本
2021-04-11 17:44:11

IE11 在它的 UA 字符串中保留“Trident”,但丢弃 MSIE。检测浏览器是否为 IE11 或以上(IE12、IE13 等)的简单方法是:

var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));

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

var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
谢谢。看起来 MS 改变了这一点。我已经更新了正则表达式。
2021-03-25 17:44:11
修订版由冒号分隔,所以不是 rv:11
2021-03-31 17:44:11
var isIE11 = !!navigator.userAgent.match(/Trident\/7.0; rv 11/);

来源:http : //www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/

在 win 7、IE 11 上,它抛出错误。
2021-03-18 17:44:11
这对我来说在 IE 11 上也是错误的
2021-04-13 17:44:11
这可能是由于必须转义正则表达式中的点。
2021-04-13 17:44:11

这将设置ie为 IE 的版本,如果没有,则设置为 0。它适用于 1 到 11,但如果 Microsoft 放弃 Trident 引擎,则可能无法检测到未来的版本。

var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}

您可能也有兴趣在我相关,更详细的答案在这里

这对我来说是最好的小脚本。它针对所有 IE 版本。它并不针对我根本不需要的 Edge。:) 谢谢@Beejor!
2021-04-02 17:44:11

我使用以下模式来定位所有 IE 浏览器。如果您只需要 IE 11,则可以将其缩短。

 /msie|trident|edge/g.test(navigator.userAgent.toLowerCase());

祝你好运!

弗雷德里克