Internet explorer 使用ColdFusion检测IE11

Internet explorer 使用ColdFusion检测IE11,internet-explorer,coldfusion,internet-explorer-11,browser-detection,cfml,Internet Explorer,Coldfusion,Internet Explorer 11,Browser Detection,Cfml,我可以使用下面的代码检测Internet Explorer的早期版本。然而,在IE 11中,用户代理字符串不再包含“MSIE”字。有没有办法用同样的方法检测IE 11 <cfif #CGI.HTTP_USER_AGENT# CONTAINS "MSIE"> //do something <cfelse> //do another thing </cfif> //做点什么 //做另一件事 这就是我用来检测IE 11的方法,但不起作用 <cfif #C

我可以使用下面的代码检测Internet Explorer的早期版本。然而,在IE 11中,用户代理字符串不再包含“MSIE”字。有没有办法用同样的方法检测IE 11

<cfif #CGI.HTTP_USER_AGENT# CONTAINS "MSIE">
//do something
<cfelse>
//do another thing
</cfif>

//做点什么
//做另一件事
这就是我用来检测IE 11的方法,但不起作用

<cfif #CGI.HTTP_USER_AGENT# CONTAINS "MSIE" OR REMatch(#CGI.HTTP_USER_AGENT#, "Trident/7.*rv:11")>
</cfif>

重新匹配
接受两个参数。第一个是regexp,第二个是要测试的字符串。你的论点有问题

REMatch("Trident/7.*rv:11", CGI.HTTP_USER_AGENT)
“重新匹配”返回一个数组,因此您需要测试数组的长度

arrayLen(REMatch("Trident/7.*rv:11", CGI.HTTP_USER_AGENT)) neq 0
你为什么要这样做?


IE11是一款现代浏览器,您通常使用网站或web应用程序执行的大多数操作都可以在IE11中正常工作,就像其他浏览器一样。

这里有一个关于IE11新浏览器字符串的说明:


这将帮助您决定在表达式中输入什么来检测IE11。

停止浏览器嗅探。@KevinB我必须这样做。如果你能看到我也在尝试解析http_user_代理,但无法管理,那么你的参数似乎与重新匹配的顺序不符。此外,rematch会返回一个数组,因此您需要测试它的长度。用户代理不包含MSIE,这正是为了与您尝试执行的操作对抗。您还没有说明为什么要这样做,但很可能是错误的方法。我没有为ie版本编写任何特殊的内容,但ie的呈现风格给我的应用程序带来了巨大的问题。它适用于除ie以外的所有浏览器。考虑到我不是很好的CF开发人员,这是我提出的解决方案,它可以工作。谢谢,所以muchI没有在IE11(或IE9+上遇到这个问题),这听起来像是用正确的html/CSW可以解决的问题,如果它是一个缺少/不正确的doctype,也不会感到惊讶。