强制 Internet Explorer 9 使用 IE 9 模式

Posted

技术标签:

【中文标题】强制 Internet Explorer 9 使用 IE 9 模式【英文标题】:Force Internet Explorer 9 to use IE 9 Mode 【发布时间】:2012-02-29 05:53:11 【问题描述】:

我在顶部附近使用带有 X-UA-Compatible 元标记的 html5 文档类型:

<!DOCTYPE html>
<!--[if lt IE 7]> <html lang="en-us" class="ie6"> <![endif]-->
<!--[if IE 7]>    <html lang="en-us" class="ie7"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us"> <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    ...

但某些用户的 Internet Explorer 9 正在以兼容性视图呈现页面。我怀疑这是因为他们打开了“在兼容性视图中显示所有网站”设置。有没有办法强制 IE9 使用 IE9 浏览器和文档模式?

【问题讨论】:

对于那些不能使用 HTTP 标头的人:我读过 http-equiv="X-UA-Compatible" 元标记必须是 &lt;head&gt; 部分中的 very first 标记。 HTTP 标头的顺序并不重要。 仅添加 即可;)例如: 【参考方案1】:

原来解决办法是在HTTP头而不是HTML中设置X-UA-Compatible:

 X-UA-Compatible: IE=edge,chrome=1

这将强制 Internet Explorer 使用最新的渲染引擎,即使“在兼容性视图中显示所有网站”已打开。

【讨论】:

我在元数据中包含了这个字符串,就像许多网站建议的那样,但它在那里没有任何效果。将它放在 HTTP 标头中似乎是唯一可靠的方法。 是的,我得出了同样的结论。必须在 HTTP 标头中声明。 http header 是什么意思,我也有同样的问题,如果我把它放在 head 部分的 meta 中没有任何反应 将它放在 head 标签内的 meta 标签中是不够的。您需要将其放在 HTTP 标头中。例如,您的 HTTP 响应需要是这样的: HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 X-UA 兼容:IE=edge,chrome=1 日期:2013 年 3 月 13 日星期三 16:11:35 GMT 内容长度:4572 ... 请提供示例代码,什么是 HTTP 标头?它在哪里?【参考方案2】:

它也可以在&lt;head&gt; in html 中使用:

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

【讨论】:

这对我不起作用。在上面的答案中添加标题是唯一的解决方案。【参考方案3】:

@netzaffin 是对的 - 如果 X-UA-Compatible 是 HEAD 部分的第一个元标记,IE9 可以工作。

【讨论】:

【参考方案4】:

请附在您网站的head部分,希望对您有所帮助。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="X-UA-Compatible" content="IE=5, IE=7, IE=8, IE=9, IE=10" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10" />

【讨论】:

【参考方案5】:

正如 JohnnyO 所说,它必须作为标头发送。在 php 中添加这个(在发送任何其他输出之前):

<?php header( 'X-UA-Compatible: IE=edge,chrome=1' ); ?>

在 Wordpress 中,如果您将其作为 header.php 文件的第一行,这可能是最好的,只要在该文件呈现之前您没有任何输出(或错误),它应该可以工作。

如果您有错误被输出到浏览器,您可能希望通过向您的应用程序添加类似这样的内容来告诉错误只被记录而不是输出到屏幕:

ini_set('display_errors', 0);
ini_set('log_errors', 1);

在 Wordpress 中,可以在 wp-config.php 文件顶部附近添加。

如果您使用 WP SuperCache 或 W3 Total Cache 之类的东西启用了缓存,那么所有关于您网站行为的赌注都将被取消 - 您需要搜索如何使用缓存插件添加额外的标头。

【讨论】:

【参考方案6】:

X-UA-COMPATIBLE 元标记必须是头部内的第一个标记,否则它将不起作用。看到这个答案:https://***.com/a/22233206/3329906。

所有这些 http 标头的东西都是多余的。

【讨论】:

【参考方案7】:

只添加

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

会的;)

例如:

<!DOCTYPE html>
<html lang="en-US" class="css3transitions"> 
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

【讨论】:

为什么内容类型的元标记在头部之外?

以上是关于强制 Internet Explorer 9 使用 IE 9 模式的主要内容,如果未能解决你的问题,请参考以下文章

强制 Internet Explorer 使用特定的 Java 运行时环境安装?

在 Intranet 中强制使用“Internet Explorer 8”浏览器模式

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

Internet Explorer 9 中的渐变

Internet Explorer 9 - 按比例调整图像大小

在 Internet Explorer 9+ 中使用 IUIAutomation 自动另存为文件