如何在兼容性视图中检测IE8是否正在运行?

时间:2009-07-30 19:34:50

标签: debugging internet-explorer browser internet-explorer-8

无论如何确定IE8浏览器是否已打开兼容性视图?

我似乎无法在Google上找到任何内容,所以我想知道这是否是一条可用的信息......

你问为什么!?我正在尝试追踪我们的应用程序中的错误。我正在穿过Elmah原木,似乎有一种趋势; IE8通常会抛出此错误。我试图在我的IE8副本中回复缺陷,但不能。我想缩小匪徒的范围,并认为这可能是一种方法。

9 个答案:

答案 0 :(得分:18)

在Javascript中,使用document.documentMode

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc196988%28VS.85%29.aspx

答案 1 :(得分:7)

显然IE8有一些新属性

  

document.documentMode

  

document.compatMode

http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx

答案 2 :(得分:3)

检查userAgent中的“Trident / 4.0”。它应该仅适用于IE-8。 http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/33e0ed49-11fb-4d91-857c-a35496e90075

答案 3 :(得分:3)

我正在使用:

try{ JSON } catch (e){ alert("Compatibility Mode Detected")  }

JSON对象是在IE 8中定义的,因此在IE 7中或在Compatibility Mode中时会抛出并捕获错误。

我喜欢这种方法每次都有效,而且它是一行。

答案 4 :(得分:2)

要扩展@ Tommy的答案,请使用功能检测(当然,警报是可选的,我在某处使用了很好的div或内联消息):

if(typeof document.documentMode !== 'undefined') { // checks if this is IE 8 or >
         if(document.documentMode < 8) {  // check if in compat mode 
             // add code here to inform user that they need to turn off compatiblity view
             alert("Click ALT-T then compat view etc...");  
         }
} 

答案 5 :(得分:0)

我相信它包含在用户代理字符串中:

“用户代理字符串中的新标记允许检测在兼容性视图中查看您网站的客户端。此标记也存在于”普通“Internet Explorer 8用户代理字符串中。”

“如果用户为您的网站选择了兼容性视图,您可以通过使用版本定位标记/ HTTP标头将其”恢复“到所需的布局模式。新的内容值'IE = EmulateIE8' ,列出支持的值列表,并在这种特定情况下提供帮助。“

此处提供更多信息:http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx

答案 6 :(得分:0)

在MVC / ASP中,Request.Browser.Version在兼容性视图中返回“7.0”,无论版本如何,否则返回浏览器版本。

您还可以使用Request.Browser.Browser来检查它是IE

Request.Browser.Version
Request.Browser.Browser

答案 7 :(得分:-1)

非常简单的方法 - 按F12,它将打开开发人员工具栏。菜单后,您将看到浏览器模式。这将清楚地表明它处于IE8模式或IE7兼容模式。

答案 8 :(得分:-1)

if(preg_match('/(?i)msie/', $_SERVER['HTTP_USER_AGENT'])) {
if(preg_match('/(?i)Trident\/5/', $_SERVER['HTTP_USER_AGENT'])) {
    echo "IE9";
}
elseif(preg_match('/(?i)Trident\/4/', $_SERVER['HTTP_USER_AGENT'])) {
    echo "IE8";
}
elseif(!preg_match('/(?i)Trident\/4/', $_SERVER['HTTP_USER_AGENT']) AND preg_match('/(?i)msie 7/', $_SERVER['HTTP_USER_AGENT'])) {
    echo "IE7";
}
elseif(preg_match('/(?i)msie [1-6]/', $_SERVER['HTTP_USER_AGENT'])) {
    echo "IE1 à IE6";
}}