如何强制IE10以IE9文档模式渲染页面

24

我有两个问题:

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

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

感谢你们的所有帮助。


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


1
开发者工具栏?我猜你是指“开发者工具”。在窗口顶部,在菜单栏右侧,有更改“浏览器模式”的选项。你也可以尝试将以下标签添加到你的<head>中:<meta http-equiv="X-UA-Compatible" content="IE=9" > - gen_Eric
IE10 给我们带来了很多麻烦。使用 width:auto 和 table-layout:fixed 的表格出现了布局问题。 - Johncl
我们在使用IE10时也遇到了很多问题,特别是在使用第三方插件时。 - BobRodes
所以Visual Studio 2012有一个代码片段,输入“metaie8”并按两次Tab键,它会给出以下代码:meta... :) - Vishal Sharma
9个回答

32

您应该能够使用X-UA元标记来完成它:

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

然而,如果你发现自己不得不这样做,那么很可能是在做错什么,应该审视一下自己正在做什么,并看看是否可以用不同/更好的方法来完成。


+1 为你的回答点赞,但这不是完全无用吗?我们实验室里有几台电脑根本无法加载我们的应用程序。经过调查,我发现所有这些电脑都设置为 IE7,即使我使用了你上面提到的带有 content="IE=8" 的 meta 标签,它仍然选择了 PC 覆盖而不是页面建议。最终,我不明白这怎么能有所帮助? - Jeach
3
很可能,你实验室中的计算机连接到了一个本地域。如果是这种情况,那么很有可能这个设置被组策略所控制,这几乎可以覆盖所有设置(即使组策略没有控制它,用户仍然可以通过开发工具强制使用不同的呈现模式)。在网页内部,你只能控制有限的东西,但是当没有被本地覆盖时,meta标签将会生效。 - Shauna
1
这个回答有点傲慢 - 如果你想让某些东西工作,而你又没有编写/无法更改它怎么办?此外:<meta>标签不应该是自闭合的(它不会以这种方式工作,只会显示使用兼容性的建议)。如果你写成<meta http-equiv="X-UA-Compatible" content="IE=9">(>前面有一个空格),它就会触发模式。 - Tomasz Gandor
5
这取决于您的文档类型。XHTML需要结束斜杠,HTML5允许两种方式,而HTML4不赞成它(但浏览器是允许的)。此外,从技术上讲,<meta http-equiv="X-UA-Compatible"...>并不是真正有效的HTML5,而且被限制在http-equiv=content-type中。这是一个专有标记,应该尽可能避免使用。如果您无法更改它(但可以以某种方式添加元标记),那么显然无法避免。没有来自OP的上下文,就无法知道情况如何。 - Shauna
@TomaszGandor:你确定没有打错其他东西吗?在>之前加一个空格可能会因为完全不同的原因触发兼容模式。 - Ry-
显示剩余2条评论

9
你是想让你的IE 10浏览器在IE 9模式下渲染网页吗?还是你希望你的网站强制IE 10在IE 9模式下呈现?
对于前者: 要强制Internet Explorer 10中正在查看的网页进入特定的文档兼容模式,请先按F12键打开F12工具。然后,在“浏览器模式”菜单上,单击“Internet Explorer 10”,并在“文档模式”菜单上单击“标准”。 http://msdn.microsoft.com/en-gb/library/ie/hh920756(v=vs.85).aspx 对于后者,其他答案是正确的,但我不建议这样做。 IE 10比IE 9更符合标准(即更类似于其他浏览器)。

1
我同意Paul的观点。我会把重点放在优化你的网站,使其更适用于IE10,因为它可以更好地处理最新的CSS和HTML代码。 - Bart
我也同意这个解决方案,但对我来说挑战在于该应用程序使用了许多第三方JSF组件,如Trinidad。IE10标准模式的主要问题是它无法处理来自Java的javascript调用,但我们正在努力解决这个问题。感谢大家的帮助。 - Amit
@Amit:啊,我明白了。IE 9 模式可以解决这个问题吗? - Paul D. Waite
@Bart 我没有对页面的控制权,开发人员还没有时间修复兼容性问题,但他们可能会抽出时间在某些页面上添加元标记。遗憾的是,我需要将浏览器模式设置为IE9,但元标记只能设置文档模式,并且无法通过F12工具更改浏览器模式。 - Schalk Versteeg

8

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

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

如果没有成功,那就尝试这个:
<meta http-equiv="X-UA-Compatible" content="IE=9">

将这些内容和其他meta标签一起添加到您的标题中。这样应该能够让IE10呈现为IE9。

另一个选项是在您的.htaccess文件中添加以下内容(假设您正在使用PHP):

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

这将普适地执行操作,而不必担心将元标签添加到所有标题中。


8

如果您只想对自己的系统进行更改,可以调整注册表。 如果您使用的是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 - th1rdey3
非常好!http://msdn.microsoft.com/zh-cn/library/ee330730(v=vs.85).aspx#browser_emulation - brandeded
值得注意的是,似乎这个设置在重新启动后不会被保留,因此选择在启动时快速使用 reg add - brandeded

3
根据这里所述,IE10(无论这篇文章是参考预览版还是正式版)只有在怪异模式下(没有DOCTYPE)才能使用X-UA-Compatible。否则,IE10不会响应请求。以下为摘录:
因此,要使IE10响应X-UA-Compatible指令,必须创建一个符合HTML5规则的浏览器触发怪异模式的页面(即:没有doctype的页面)。也可以将指令作为HTTP头发送,但是:如果您使用它来降级渲染,则HTTP发送的指令似乎没有任何效果-它只能用于升级渲染。
因此,您需要手动使用Dvelopers Tools 或使用怪异模式(但我建议保持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

2
这不是我发现的。我刚刚在一个有DOCTYPE的页面上成功使用了meta标签...但只有当它是head中的第一个标签时才起作用。真是滑稽... - Jan Krüger
好消息加1。但是,正如我在答案中指定的那样,它是针对IE10的预览版。因此,很可能他们已经将此行为更改为最终版本。话虽如此,据我所记,meta标签始终需要出现在第一个标签上,以让浏览器知道所需的呈现模式。 - Ragnarokkr

2

您可以通过添加以下代码来强制IE10以IE9模式渲染:

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

在您的<head>标签中。

有关更多信息,请参见MSDN...


1
这在IE8浏览器中会如何表现? - Amit
4
如果一个网页指定了一个不受正在使用查看该网页的Internet Explorer版本支持的文档兼容模式,那么该网页将会在该版本的Internet Explorer所支持的最高文档模式下显示。例如,当使用Internet Explorer 8查看指定了IE9模式的网页时,该页面将以IE8模式显示。 - Bart

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

在标签或HTTP响应头中添加X-UA-Compatible标记

使用IE工具F12

更改Windows注册表


0

在寻找 DNN6 网站的解决方案时,我发现了这篇文章。错误信息如下:

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

但我需要相同的解决方案:强制兼容模式为 IE9。所以让我分享一下我是如何解决这个问题的。

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

对我非常有效!


0

这个黑客是递归的。就像IE本身使用了许多其他进程所需的“Web组件”一样,因此在注册表中我们添加了IEXPLORE.exe。实际上,这是一个递归的黑客。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接