我很困惑。我应该可以设置

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

IE8和IE9应该使用最新的渲染引擎来渲染页面。但是,我刚刚测试了它,如果兼容性模式在我们网站的其他地方被打开,它将为我们的页面保持,即使我们应该强制它不这样做。

你应该如何确保IE不使用兼容模式(即使在内部网中)?

FWIW,我使用HTML5 DocType声明(<!doctype html >)。

以下是这一页的前几行:

<!doctype html> 
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]--> 
<!--[if IE 7 ]>    <html lang="en" class="innerpage no-js ie7"> <![endif]--> 
<!--[if IE 8 ]>    <html lang="en" class="innerpage no-js ie8"> <![endif]--> 
<!--[if (gte IE 9)|!(IE)]><!--> 
<html lang="en" class="innerpage no-js"> 
<!--<![endif]--> 
    <head> 
        <meta charset="ISO-8859-1" /> 
        <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

编辑:我刚刚了解到,IE8的默认设置是内网站点使用IE7兼容模式。这会覆盖x - ua compatible元标记吗?


当前回答

如果你正在使用LAMP堆栈,那么将其添加到web根文件夹中的.htaccess文件中。不需要将它添加到每个PHP文件中。

<IfModule mod_headers.c>
    Header add X-UA-Compatible "IE=Edge"
</IfModule>

其他回答

IE 11不再允许你通过发送头文件来覆盖浏览器兼容性视图设置…

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

强制浏览器不使用兼容性视图的唯一方法似乎是让用户在浏览器中禁用它。我们的网站是内网网站,IE默认选项是为内网网站使用兼容性视图。真痛苦!

我们能够防止用户更改IE 9和10的浏览器设置,但它不再适用于IE 11。我们的IE用户正在切换到Chrome,这不是问题,从来都不是问题。

我在IE11中遇到了同样的问题。这些答案都没有解决我的问题。在深入研究之后,我注意到浏览器是在企业模式下运行的。(通过点击F12并单击仿真选项卡进行验证,寻找浏览器配置文件下拉菜单)设置被锁定,不允许我更改设置。

在删除以下注册表项中的CurrentVersion后,我能够将配置文件更改为Desktop:

HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode

在将模式更改为桌面后,这篇文章上的答案将起作用。

此外,X-UA-Compatible必须是头部部分的第一个元标记

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>

顺便说一下,正确的顺序或主要的头部标签是:

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta charset="utf-8">
    <title>Site Title</title>
    <!-- other tags -->
</head>

这种方式

我们将渲染引擎设置为在IExplorer开始处理之前使用 然后我们将文档设置为所有浏览器使用的编码 然后打印标题,它将使用已经定义的编码进行处理。

我也在本地主机的IE7文档标准中得到了相同的IE9渲染问题。 我尝试了许多条件注释标签,但不成功。 最后,我只是删除了所有的条件标签,只是在头部之后立即添加了元标签,就像下面这样,它就像魅力一样。

<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

希望能有所帮助

正如NEOSWF上面指出的,Paul Irish条件注释阻止了元标记的任何影响。

这里有几个修复程序(http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/)

这些包括:

添加两个HTML类,使用服务器头并在doctype上面添加条件注释。

在我最新的项目中,我决定删除Paul Irish条件注释。我不喜欢在html之前添加任何东西而不做大量的测试,只通过查看html就能看到已经设置了什么,这很好。

最后,我在正文后面直接包围了一个div,并使用了条件注释

  <!--[if IE 7]><div class="ie7"><!--<![endif]-->
  ... regular body stuff
  <!--[if IE 7]></div><!--<![endif]-->

我可以在身体周围这样做,但它更困难的cms,如Wordpress。

显然,这是标记内部的另一个DIV,但仅适用于较旧的浏览器。

我认为这可能是基于每个项目的决定。

我还读了一些关于字符集元标签需要在前1024字节,所以这确保了。

有时候最简单,最容易读懂的想法是最好的,绝对值得思考!感谢上面链接的第6条评论指出了这一点。