如何强制 IE10 以 IE9 文档模式呈现页面

Posted

技术标签:

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

我有两个问题:

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

    在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...:) 【参考方案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 完美! msdn.microsoft.com/en-us/library/… 值得注意的是,此设置似乎不会“通过重新启动”保留,而是在启动时选择了快速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

对我来说很棒!

【讨论】:

以上是关于如何强制 IE10 以 IE9 文档模式呈现页面的主要内容,如果未能解决你的问题,请参考以下文章

IE 页面被强制进入 IE7 文档模式

如何强制 Internet Explorer 以标准模式而不是 Quirks 模式呈现?

在 IE10 iframe 中强制 IE8 仿真

IE9 字母间距问题

如何在兼容模式下从 IE10 文本框中删除清除按钮(“X”按钮)?

文档模式