如何模拟客户的IE兼容性视图设置?

时间:2013-07-31 17:44:27

标签: javascript internet-explorer-10 ie-compatibility-mode

更新:主要问题是,有没有什么会导致IE10专门在IE5怪癖模式下呈现页面(与一般的兼容模式相反),尽管有适当的doctype和x-ua兼容的元标记到位? (要明确的是,我们不希望页面在IE5中呈现怪癖,我们希望它以完整的IE10标准呈现。)


我们的页面在一个客户的IE5怪癖模式下渲染,导致渲染失败。我可以使用开发工具强制IE进入相同的模式并复制相同的失败,但为什么这会发生在他(并且只有他)的第一位?它可能是他环境中的东西,我可以在我的脑海中模拟它吗?客户正在使用IE10。

我们正在使用:

<!DOCTYPE html>

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

我们还要添加HTTP响应标头:

X-UA-Compatible: IE=edge,chrome=1

但我们无法验证此修复,因为它在我们自己的IE10实例中运行良好。

1 个答案:

答案 0 :(得分:1)

从此链接:http://blogs.msdn.com/b/deviations/archive/2009/05/07/how-to-enable-ie-8-compatibility-view-for-your-whole-web-site-or-for-specific-web-site-directories.aspx

  

许多客户提出的问题是“我如何强迫客户   浏览器在访问我们的网站时使用兼容性视图?所以   客户不必在客户端激活它。“

     

Web开发人员和站点管理员可以配置IIS及其   网站告诉Internet Explorer 8自动模拟Internet   Explorer 7访问他们的网站或只访问特定的WebPages时。

     

这是通过向IIS和网站添加自定义HTTP标头来完成的   web.config或将元标记添加到特定页面。 HTTP标头是   由Internet Explorer 8解释,它将激活   兼容性视图。所有其他浏览器将忽略此自定义   HTTP标头。

X-UA-Compatible: IE=EmulateIE7

这是FORCE在兼容模式下渲染。

如果您想在兼容模式下“模拟”浏览器,用户RocketHazmat会在评论中提到要做的事情(使用工具&gt;设置)。

您可以通过以下两个博客熟悉IE8和IE9的此属性和兼容性视图模式: 介绍兼容性视图:http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx。 介绍IE9的用户代理字符串:http://blogs.msdn.com/b/ie/archive/2010/03/23/introducing-ie9-s-user-agent-string.aspx

如果您想'检测'IE兼容性视图模式:

我觉得这个答案很有趣:JavaScript: Can I detect IE9 if it's in IE7 or IE8 compatibility mode?(document.documentMode是最好的方法)。主题on stackoverflow from a google search

来自此链接:http://social.msdn.microsoft.com/Forums/vstudio/en-US/ae715fd2-1ddd-46f7-8c26-9aed6b2103f1/how-to-detect-compatibility-mode-in-ie-any-version

  

经过研究,我们可以找到用户代理字符串的值   在不同的浏览模式下:

     
      
  • IE7:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; ...)
  •   
  • IE8:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; Trident / 4.0; ...)
  •   
  • IE8兼容性视图:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; Trident / 4.0; ...)
  •   
  • IE9:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; Trident / 5.0)
  •   
  • IE9兼容性视图:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; Trident / 5.0; ...)
  •   
     

请注意,字符串中的一些不相关的值会被忽略,我们只会   需要关注一些可以结合起来决定的关键价值   浏览模式,如MSIE版本NO。和三叉戟模式NO ..

     

这是最终的解决方案:

    var agentStr = navigator.userAgent;
     var mode;
     if (agentStr.indexOf("Trident/5.0") > -1) {
         if (agentStr.indexOf("MSIE 7.0") > -1)
             mode = "IE9 Compatibility View";
         else
             mode = "IE9";
     }
     else if (agentStr.indexOf("Trident/4.0") > -1) {
         if (agentStr.indexOf("MSIE 7.0") > -1)
             mode = "IE8 Compatibility View";
         else
             mode = "IE8";
     }
     else
         mode = "IE7";

     document.title = "Browser Mode:\t" + mode;
     //document.write(navigator.userAgent);

其他东西:stackoverflow.com/questions/11865188/does-the-windows-8-internet-explorer-10-still-have-quirksmode#11865561,他们解释了2 IE10的怪癖模式。与你的情况有关。希望它有所帮助。