1

更新:主要问题是,尽管有正确的文档类型和与 x-ua 兼容的元标记,是否有任何东西会导致 IE10 以 IE5 怪癖模式(与一般的兼容模式相反)呈现页面?(明确地说,我们不希望页面以 IE5 怪癖呈现,我们希望它以完整的 IE10 标准呈现。)


我们的页面正在为一位客户以 IE5 quirks 模式呈现,导致呈现失败。我可以使用开发工具强制 IE 进入相同的模式并复制相同的故障,但为什么这首先会发生在他(而且只有他)身上?可能是他的环境中的某些东西,我可以在我的最后模拟它吗?客户使用的是 IE10。

我们正在使用:

<!DOCTYPE html>

和:

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

我们还将添加一个 HTTP 响应标头:

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

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

4

1 回答 1

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

许多客户提出的问题是“如何强制客户端浏览器在访问我们的网站时使用兼容性视图?这样客户就不必在客户端激活它。”</p>

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

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

X-UA-Compatible: IE=EmulateIE7

这是为了在兼容模式下强制渲染。

如果您想在兼容模式下“模拟”浏览器,用户 RocketHazmat 在评论中提到了要做什么(使用工具 > 设置)。

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

如果要“检测”IE 兼容性视图模式:

我发现这个 SO 答案很有趣:JavaScript: 如果 IE9 处于 IE7 或 IE8 兼容模式,我可以检测到它吗? (document.documentMode 是最好的方法)。来自谷歌搜索的 stackoverflow 上的主题。

从这个链接:http ://social.msdn.microsoft.com/Forums/vstudio/en-US/ae715fd2-1ddd-46f7-8c26-9aed6b2103f1/how-to-detect-compatibility-mode-in-ie-any-版本

经过研究,我们可以发现不同浏览模式下User Agent String的取值分别为:

  • 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..

这是最终的解决方案:

    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 怪癖模式。与你的情况有关。希望能帮助到你。

于 2013-07-31T18:06:32.657 回答