强制 IE8 进入 IE7 兼容模式

Posted

技术标签:

【中文标题】强制 IE8 进入 IE7 兼容模式【英文标题】:Force IE8 Into IE7 Compatiblity Mode 【发布时间】:2010-11-04 02:53:24 【问题描述】:

有没有办法使用 .NET 或 javascript

【问题讨论】:

另外,我可以使用 IIS 设置完成此操作吗? 我想我可以看到旧页面的价值,但请不要创建依赖 IE7 的新页面......让野兽死吧。 IE8 有 IE7 没有的错误,并且在切换到兼容模式时会消失:***.com/questions/1070178/… 我的网站受到该错误的影响,我宁愿告诉 IE8 正确显示它IE7 和其他所有浏览器都会在我的 .htaccess 文件中添加一行,而不是在我的实际页面中添加特定于浏览器的解决方法。 添加X-UA-Compatible标头也去掉了“兼容性视图”按钮,看起来更专业的IMO。用户不必弄清楚哪种模式最适合您的网站。让网站支持所有主流浏览器是网站管理员的工作。 【参考方案1】:

如果您将此添加到您的元标记中:

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

IE8 会像 IE7 一样呈现页面。

【讨论】:

你是对的 - 但尝试在开始 标记之后立即添加它。当它位于页面下方时,我遇到了问题。 如果我不将此行添加到我网站上的每个 aspx 页面会怎样。我可以用 IIS 来做吗? @Bryan:不。这就是我们使用母版页的原因。 请参阅下面的 DDaviesBrackett 的回答以在站点级别进行操作 这个解决方案的问题是你不能把它放在&lt;!--[if IE]&gt;风格的条件句中——它必须是head元素中的第一个标签。这意味着它并不是一个真正长期可行的解决方案,因为它甚至会迫使 IE9 进入 IE7 渲染模式。除非有人知道解决方案...【参考方案2】:

我现在可能已经找到了。 http://blog.lroot.com/articles/the-ie7-compatibility-tag-force-ie8-to-use-the-ie7-rendering-mode/

网站说要添加这个元标记:

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

或将其添加到 .htaccess

Header set X-UA-Compatible: IE=EmulateIE7 

【讨论】:

感谢 htaccess !【参考方案3】:

它甚至比这更简单。使用 html,您只需将此元标记添加到您的页面(页面上的第一件事):

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

如果您想使用 .net 来执行此操作,您只需发送带有该元信息的 HTTP 请求的标头即可。不过,这需要刷新页面才能工作。

此外,您可以在此处查看类似的问题: Compatibility Mode in IE8 using VBScript

【讨论】:

【参考方案4】:

你可以设置an HTTP header,它会强制IE8使用IE7兼容模式。

【讨论】:

我无法使用元标记,但添加此标头就可以了。谢谢!【参考方案5】:

对此的注释:

IE 8.0s 仿真只承诺以相同的方式显示页面。存在可能导致功能中断的细微差异。我最近遇到了一个问题。在 IE 7.0 使用 IE 8.0 中称为“anonymous()”的 javascript 包装器函数的地方,包装器的名称不同。

所以不要指望像 JavaScript 这样的东西“正常工作”,因为你打开了仿真。

【讨论】:

无论浏览器版本如何,编写依赖于匿名函数“名称”的代码都不是可靠的依赖项。【参考方案6】:

如果您想在 IE 8 标准模式下切换 IE 8 页面呈现,请再做一个

<meta http-equiv="X-UA-Compatible" content="IE=100" /> <!-- IE8 mode -->

【讨论】:

【参考方案7】:

您可以在 web.config 中进行操作

    <httpProtocol>
        <customHeaders>
            <add name="X-UA-Compatible" value="IE=7"/>
        </customHeaders>
    </httpProtocol>

与上述解决方案相比,我有更好的结果。不知道为什么这没有作为解决方案给出。 :)

【讨论】:

+1 好的解决方案,如果您使用的是 IIS7 - iis.net/ConfigReference/system.webServer/httpProtocol 当您无法更改页面内容或直接更改页面标题时的绝佳解决方案。 我认为 HTTP 标头会覆盖任何元标记,因此如果您可以选择,它们应该是首选解决方案。【参考方案8】:

这可以在 IIS 中完成: http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

同时阅读 cmets: 2009 年 4 月 1 日,星期三,上​​午 8:57,作者:约翰·摩尔

快速跟进。只要我使用 IE=EmulateIE7 值,这对我的网站非常有用。尝试使用 IE=7 导致我的网站在 IE8 上运行时基本上挂起。

【讨论】:

【参考方案9】:

我的代码有这个标签

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

有没有一种方法可以让我跳过这个标签,而布局却可以很好地显示出来 使用该标签,显示器将在 IE 7 上运行,但我想在其他版本中运行它...

【讨论】:

以上是关于强制 IE8 进入 IE7 兼容模式的主要内容,如果未能解决你的问题,请参考以下文章

ie6 ie7 ie8 ie9兼容问题终极解决方案

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

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

添加http头以强制IE8在IE7模式下呈现

添加http头以强制IE8以IE7模式呈现(PHP版本)

PHP 添加http标头以强制IE8在IE7模式下呈现(PHP-Version)