在兼容模式下,从Apache检测IE版本

时间:2014-02-10 06:32:03

标签: apache internet-explorer http browser http-headers

  

如果从本地Intranet区域中的网站检索网页,则使用IE7模式。 - MSDN

这就是我们所发生的事情。客户端已将选项设置为“以兼容模式打开Intranet站点”。因此,我们的应用程序在IE7模式下加载。

有什么方法可以检测客户端是否在兼容模式下运行IE?

据我所知,如果浏览器处于兼容模式,那么它会向IE发送IE7​​用户代理字符串。所以我可以得到那个文件模式是IE7,但我无法验证它是他的原生IE7还是兼容的。

任何人都知道 如何从Apache检测确切的IE浏览器版本并检测它是处于兼容模式还是纯模式

1 个答案:

答案 0 :(得分:2)

以下是IE的用户代理字符串,用于显示兼容模式。

IE7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1;...)
IE8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0;...)
IE8 Compatibility View: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0;...)
IE9: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
IE9 Compatibility View: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0;...)
IE10 Compatibility View Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0;...
IE11 Compatibility View : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0...)

确定在兼容模式下运行native IE789的方法是IE8和IE9还包含Trident字符串。

因此,如果您在apache中执行user_agent检查,MSIE 7.0并且它还包含Trident/4.0那么IE8正在IE7 compatibility mode中运行。

IE9相同。如果它同时具有MSIE 7.0Trident/5.0,那么它是IE9在IE7兼容模式下运行。

否则,user_agent字符串只有MSIE 7.0,那么它是本机IE7。

这可能是user_agent的唯一方法。希望有所帮助。

此处有更多信息。

http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx

这里也是一个不错的清单。 http://www.useragentstring.com/pages/Internet%20Explorer/