如何使用 javascript 针对 IE9 及更高版本



我知道IE11改变了navigator.userAgent的发送方式,我已经看到了这个回应。如果我们只需要IE11及更高版本,但我们需要IE9及更高版本,则这很有效。我在某处读到IE9中引入了三叉戟代号,但是对IE8的快速测试表明,那里的用户代理也包含三叉戟。

我的正则表达式不是很好;我如何拆分这些字符串来确定Trident/和以下分号之间的内容,以便我可以知道我正在处理哪个版本?(请不要告诉我改用特征检测;这不是一个选项。

IE 8:

"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BO1IE8_v1;ENUS)"

IE 9:

"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.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; InfoPath.3)" 

我现有的代码(没有捕获IE8)如下所示:

if (navigator.userAgent.match(/Trident/)) {
   // it's supported; do stuff
}

基本上,我正在尝试从IE9获取5.0,从IE8获取4.0。

我的正则表达式不是很好;我如何拆分这些字符串来确定 Trident/和以下分号之间的内容,以便我能够知道我正在处理哪个版本?

您想使用捕获组并获取数组的第二个元素,该元素将为您提供捕获的部分。

var stringAfterTrident = navigator.userAgent.match(/Trident([^;]+);/)[1];
//should return ["Trident/5.0;", "/5.0"] and you want the second item of the array

/Trident([^;]+);/基本上说从三叉戟开始,捕获一个或多个不是分号的字符,直到有一个分号。

最新更新