如何强制 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 没有控制它,用户仍然可以通过开发工具强制使用不同的渲染模式)。您可以从网页中控制的内容只有这么多,但是当没有在本地覆盖时,元标记将起作用。 这个回答有点傲慢——如果你只想做一些你没有写/不能改变的事情怎么办。另外:<meta>
标签不应该是自封闭的(这样不行,只显示使用兼容性的建议)。如果你写<meta http-equiv="X-UA-Compatible" content="IE=9" >
(> 之前的空格)它实际上会触发模式。
@TomaszGandor - 这取决于您的文档类型。 Xhtml 需要结束斜线,HTML5 允许任何一种方式,而 HTML4 不赞成它(但浏览器允许它)。另外,从技术上讲,<meta http-equiv="X-UA-Compatible"...>
isn't actually valid HTML5, anyway, and is restricted to http-equiv=content-type
。这是一个专有标签,应该避免如果可能。如果您无法更改它(尽管可以以某种方式添加元标记),那么显然无法避免。但是,如果没有 OP 的上下文,就无法知道这一点。
@Shauna - 关于 HTML 5 中 meta
s 的限制,您是对的。即使 name
属性也受到限制,呵呵。但是忘记 HTML5 的有效性——我不是在争论这个——我的意思是,在 Internet 历史上造成许多问题的某个专有浏览器会对这个元标记做出反应。结果是——在自动关闭或缺少>
之前的空格时没有触发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 模式下通过添加:
<meta http-equiv="X-UA-Compatible" content="IE=9">
在您的<head>
标签中。
更多信息请参见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 文档模式呈现页面的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 Internet Explorer 以标准模式而不是 Quirks 模式呈现?