【问题标题】:How to force IE10 to render page in IE9 document mode如何强制 IE10 以 IE9 文档模式呈现页面
【发布时间】:2013-01-01 04:50:51
【问题描述】:

我有两个问题:

  1. 如何强制 IE10 以 IE9 文档模式呈现?目前它以标准文档模式呈现我的页面。

  2. 在IE10的开发者工具栏中,看不到IE10的文档模式选项。是没有实现,还是我的浏览器版本过时了?

感谢您的所有帮助。


编辑:感谢大家提供的解决方案。之前我使用的是元标记 <meta http-equiv="x-ua-compatible" content="IE=edge" > 只是为了确保 IE 将以最高文档模式呈现页面,但我在 IE10 标准模式下遇到了一些问题,所以我更改了元标记以在 IE9 模式下呈现页面: <meta http-equiv="x-ua-compatible" content="IE=9" >.

【问题讨论】:

  • developer toolbar?我假设你的意思是developer tools。在窗口顶部,菜单右侧是更改“浏览器模式”的选项。您也可以尝试将此标签添加到您的<head><meta http-equiv="X-UA-Compatible" content="IE=9" >
  • IE10 让我们头疼不已。使用 width:auto 和 table-layout:fixed 的表格突然出现表格布局问题
  • 我们在使用 IE10 时也遇到了相当大的问题,尤其是在使用第三方插件时。
  • 所以 visual studio 2012 有一个 sn-p ,输入 metaie8 并按两次 tab 它将给出这个 meta...:)

标签: html browser internet-explorer-10


【解决方案1】:

您应该可以使用the X-UA meta tag

<meta http-equiv="X-UA-Compatible" content="IE=9" />

但是,如果您发现自己必须这样做,那么您可能做错了什么,应该看看您在做什么,看看您是否可以做得不同/更好方式。

【讨论】:

  • +1 的答案,但这不是完全没用吗?我的实验室里有几台 PC,根本没有加载我们的应用程序。经过调查,我意识到所有这些 PC 都设置为 IE7,即使我使用您上面的带有 content="IE=8" 的元数据,它仍然选择了 PC 覆盖而不是页面建议。最后,我不明白这有什么帮助?
  • @Jeach - 很有可能,您实验室中的 PC 已连接到本地域。如果是这种情况,那么该设置很有可能由组策略处理,这几乎胜过一切(即使 GP 没有控制它,用户仍然可以通过开发工具强制使用不同的渲染模式)。您可以从网页中控制的内容只有这么多,但是当没有在本地覆盖时,元标记将起作用。
  • 这个回答有点傲慢——如果你只想做一些你没有写/不能改变的事情怎么办。另外:&lt;meta&gt; 标签不应该是自封闭的(这样不行,只显示使用兼容性的建议)。如果你写&lt;meta http-equiv="X-UA-Compatible" content="IE=9" &gt;(> 之前的空格)它实际上会触发模式。
  • @TomaszGandor - 这取决于您的文档类型。 XHTML 需要结束斜线,HTML5 允许任何一种方式,而 HTML4 不赞成它(但浏览器允许它)。另外,从技术上讲,&lt;meta http-equiv="X-UA-Compatible"...&gt;isn't actually valid HTML5, anyway, and is restricted to http-equiv=content-type。这是一个专有标签,应该避免如果可能。如果您无法更改它(尽管可以以某种方式添加元标记),那么显然无法避免。但是,如果没有 OP 的上下文,就无法知道这一点。
  • @Shauna - 关于 HTML 5 中 metas 的限制,您是对的。即使 name 属性也受到限制,呵呵。但是忘记 HTML5 的有效性——我不是在争论这个——我的意思是,在 Internet 历史上造成许多问题的某个专有浏览器会对这个元标记做出反应。结果是——在自动关闭或缺少&gt;之前的空格时没有触发IE9模式!这意味着即使没有收获也会损害 w3c 的有效性。
【解决方案2】:

您的意思是要告诉您的 IE 10 副本以 IE 9 模式呈现它查看的页面?

或者您的意思是您希望您的网站强制 IE 10 以 IE 9 模式呈现它?

对于前者:

要强制您在 Internet Explorer 10 中查看的网页进入特定的文档兼容模式,请先按 F12 键打开 F12 工具。然后,在 Browser Mode 菜单上,点击 Internet Explorer 10,然后在 Document Mode 菜单上,点击 Standards .

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

对于后者,其他答案是正确的,但我不建议这样做。 IE 10 比 IE 9 更符合标准(即更类似于其他浏览器)。

【讨论】:

  • 我同意保罗的观点。我会专注于为 IE10 而不是 IE9 优化您的网站,因为它可以更好地处理最新的 CSS 和 HTML 代码。
  • 我也同意这个解决方案,但对我来说挑战是这个应用程序使用了很多第三方 JSF 组件,比如 Trinidad IE10 标准模式的主要问题是它无法处理来自 java 的 javascript 调用但我们正在努力。谢谢大家的帮助
  • @Amit:啊,我明白了。 IE 9 模式能解决这个问题吗?
  • @Bart 我无法控制页面,开发人员还没有时间修复兼容性问题,但他们可能会花时间为某些页面添加元标记。唉,我需要浏览器模式为 IE9,但元标记只设置文档模式,不能通过 F12 工具更改浏览器模式。
【解决方案3】:

如果您只想对自己的系统进行更改,您可以调整注册表。如果您有 IE10 并且您访问的许多网站在 IE10 中无法正常呈现,那么您可以调整注册表以强制 IE 以 IE9 模式打开。

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

创建一个 DWORD 为 iexplore.exe 并赋予值 9999。重新启动您的 IE,它将以 IE9 模式打开 :)

感谢我的同事 Sreejith D :)

【讨论】:

  • 是名称iexplore.exe 还是iexplorer.exe
  • 值得注意的是,此设置似乎不会“通过重新启动”保留,而是在启动时选择了快速reg add
【解决方案4】:

我以前没有见过这样做,但这是在使用 IE 9 时模拟 IE 8/7 的方式:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

如果没有,那就试试这个:

<meta http-equiv="X-UA-Compatible" content="IE=9">

将这些与其他元标记一起添加到您的标题中。这应该会强制 IE10 呈现为 IE9。

您可以做的另一个选择(假设您使用的是 PHP)是将其添加到您的 .htaccess 文件中:

Header set X-UA-Compatible "IE=9"

这将普遍执行该操作,而不必担心将元标记添加到所有标题。

【讨论】:

    【解决方案5】:

    正如this 所说,IE10(无论如何,这篇文章是指预览版本)它能够使用X-UA-Compatible 只有如果文档处于怪异模式(没有DOCTYPE ),否则 IE10 不会响应请求。

    摘录如下:

    因此,要使 IE10 对 X-UA-Compatible 指令做出反应,必须根据 HTML5 的规则创建一个触发 quirks-mode 的页面(即:一个没有 doctype 的页面)。也可以将指令作为 HTTP 标头发送,但是:如果您使用 HTTP 发送的指令来降级渲染,它似乎没有任何效果——它只能用于升级渲染

    因此,您必须使用开发人员工具或怪癖模式手动执行此操作(但我建议保持第一次与其他浏览器的标准保持一致的 IE10 模式)

    编辑:以下是一些有用的阅读链接:

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

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

    http://blogs.msdn.com/b/ie/archive/2011/12/14/interoperable-html5-quirks-mode-in-ie10.aspx

    【讨论】:

    • 这不是我发现的。我刚刚在确实有DOCTYPE 的页面上成功使用了meta 标记...但它仅在它是head 中的第一个标记时才有效。歇斯底里的……
    • +1 好消息。但是,正如我在回答中指定的那样,它指的是 IE10 的 预览版。因此,很可能,他们已将此行为更改为最终版本。也就是说,就我所记得的而言,meta 标签一直被要求作为第一个标签出现,以让浏览器知道它需要哪种渲染模式.
    【解决方案6】:

    你可以强制 IE10 在 IE9 模式下通过添加:

    &lt;meta http-equiv="X-UA-Compatible" content="IE=9"&gt;

    在您的&lt;head&gt; 标签中。

    更多信息请参见MSDN...

    【讨论】:

    • IE8 浏览器的表现如何?
    • 如果网页指定的文档兼容模式不受用于查看该网页的 Internet Explorer 版本支持,则该网页将以该版本 Internet Explorer 支持的最高文档模式显示。例如,指定 IE9 模式的页面在 Internet Explorer 8 浏览时会以 IE8 模式显示。
    【解决方案7】:

    有很多方法可以做到这一点:

    添加 X-UA 兼容 标记到头部 http响应头

    使用 IE 工具 F12

    更改窗口注册表

    【讨论】:

      【解决方案8】:

      hack 是递归的。就像 IE 本身使用的组件被许多其他需要“Web 组件”的进程使用。因此在注册表中我们添加IEXPLORE.exe。实际上,它是一种递归 hack。

      【讨论】:

        【解决方案9】:

        我在为我的 DNN6 网站寻找解决方案时发现了这篇文章。 错误是

        SCRIPT5007:无法获取未定义的属性“documentElement”或 空引用

        但我需要相同的解决方案:强制兼容模式为 IE9。因此,让我与您分享我为解决此问题所做的工作。

        因此,对于 DotNetNuke 6 用户,请尝试 StyleHelper SkinObject

        对我来说很棒!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-28
          • 2013-05-26
          • 1970-01-01
          • 1970-01-01
          • 2013-03-25
          • 2012-12-03
          • 1970-01-01
          相关资源
          最近更新 更多