Javascript 如何模拟客户';IE兼容性视图设置?

Javascript 如何模拟客户';IE兼容性视图设置?,javascript,internet-explorer-10,ie-compatibility-mode,Javascript,Internet Explorer 10,Ie Compatibility Mode,更新:主要问题是,是否有任何东西会导致IE10在IE5怪癖模式下呈现页面(与一般的兼容模式相反),尽管有适当的doctype和x-ua-compatible元标记?(要明确的是,我们不希望页面以IE5的怪癖呈现,我们希望它以完整的IE10标准呈现。) 我们的页面以IE5 quirks模式为一个客户呈现,导致呈现失败。我可以使用开发工具强迫IE进入相同的模式并复制相同的失败,但为什么这会发生在他身上(而且只有他一个人)?这可能是他的环境中的某样东西吗?我能在我这边模拟它吗?客户正在使用IE10

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


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

我们正在使用:

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

来自此链接:

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

Web开发人员和站点管理员可以配置IIS及其应用程序 告诉Internet Explorer 8自动模拟Internet的站点 当他们访问他们的网站或只是特定的网页时,浏览器7

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

这将强制在兼容模式下进行渲染

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

您可以通过以下两个博客熟悉此属性以及IE8和IE9的兼容性视图模式: 正在引入兼容性视图:。 正在介绍IE9的用户代理字符串:

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

我发现这个答案很有趣:(document.documentMode是最好的方式)。主题

通过此链接:

经过研究,我们可以发现,这些值是以用户代理字符串表示的 在不同的浏览模式下:

  • IE7:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;…)
  • IE8:Mozilla/4.0(兼容;MSIE8.0;WindowsNT6.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版本号和三叉戟模式号

最后的解决方案是:

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

通过此链接:

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

Web开发人员和站点管理员可以配置IIS及其应用程序 告诉Internet Explorer 8自动模拟Internet的站点 当他们访问他们的网站或只是特定的网页时,浏览器7

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

这将强制在兼容模式下进行渲染

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

您可以通过以下两个博客熟悉此属性以及IE8和IE9的兼容性视图模式: 正在引入兼容性视图:。 正在介绍IE9的用户代理字符串:

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

我发现这个答案很有趣:(document.documentMode是最好的方式)。主题

通过此链接:

经过研究,我们可以发现,这些值是以用户代理字符串表示的 在不同的浏览模式下:

  • IE7:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;…)
  • IE8:Mozilla/4.0(兼容;MSIE8.0;WindowsNT6.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版本号和三叉戟模式号

最后的解决方案是:


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

我们也遇到过这样的问题,而另一个原因是MS安全补丁(KB2846071)安装在客户的机器上,而不是我们的机器上。@greim:你确定他更改它不是为了欺骗你吗?:-P我在开玩笑。。。不管怎么说,除了一些愚蠢的工具栏,我想不出为什么它会在你的机器上工作
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
X-UA-Compatible: IE=edge,chrome=1
X-UA-Compatible: IE=EmulateIE7
    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);