我知道 IE11 改变了navigator.userAgent
发送方式,我也看到了这个响应。如果我们只需要 IE11 及更高版本,这很有效,但我们需要 IE9 及更高版本。我在某处读到 Trident 代码名称是在 IE9 中引入的,但对 IE8 的快速测试表明那里的用户代理也包含 Trident。
我的正则表达式不是很好;如何拆分这些字符串以确定Trident/
和后面的分号之间的内容,以便我可以知道我正在处理哪个版本?(请不要告诉我改用特征检测;这不是这里的选项。)
即 8:
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BO1IE8_v1;ENUS)"
即 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。