使用标记强制关闭IE兼容模式

时间:2010-08-10 13:13:42

标签: html internet-explorer

我正在为在所有Intranet站点上强制使用兼容模式的客户端工作。我想知道是否有一个标签可以放入我的HTML中,强制兼容模式关闭。

12 个答案:

答案 0 :(得分:510)

There is the "edge" mode

<html>
   <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <title>My Web Page</title>
   </head>
   <body>
      <p>Content goes here.</p>
   </body>
</html>

从链接的MSDN页面:

  

边缘模式告诉Windows Internet Explorer以可用的最高模式显示内容,这实际上打破了“锁定”范例。使用Internet Explorer 8,这相当于IE8模式。如果Internet Explorer的(假设的)未来版本支持更高的兼容性模式,则设置为“边缘”模式的页面将以该版本支持的最高模式显示;但是,当使用Internet Explorer 8查看时,这些相同的页面仍将以IE8模式显示。

但是,在生产使用中不鼓励使用“边缘”模式:

  

建议Web开发人员限制他们使用Edge模式来测试页面和其他非生产用途,因为在未来版本的Windows Internet Explorer中呈现页面内容可能会出现意外结果。

老实说,我并不完全明白为什么。但根据这一点,目前最好的方法是使用IE=8

答案 1 :(得分:89)

经过几个小时对这些内容进行问题排查......以下是一些快速亮点,可以帮助我们X-UA-Compatible文档:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16

使用<meta http-equiv="X-UA-Compatible" content=" _______ " />

  • 标准用户代理模式(非模拟用户)忽略页面中的<!DOCTYPE>指令,并根据该IE版本支持的标准进行渲染(例如, IE=8将更好地服从表边界间距和一些伪选择器而不是IE=7)。

  • 然而, Emulate 模式告诉IE遵循页面中的任何<!DOCTYPE>指令,根据您选择的版本呈现标准模式,并基于{{1}呈现怪癖模式}

  • IE=5属性的可能值为:

    content

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

答案 2 :(得分:63)

如果您正在使用Intranet区域中的某个页面,您可能会发现IE9无论您做什么,都会进入IE7 Compat模式。

这是因为IE兼容性设置中的设置表明所有Intranet站点都应以兼容模式运行。您可以通过组策略解除此问题(或者只是在IE中简单地取消它),或者您可以设置以下内容:

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

这是有效的(详见其他答案),但最初可能不会这样:需要在声明样式表之前。如果不这样做,则会被忽略。

答案 3 :(得分:26)

我相信这会解决问题:

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

答案 4 :(得分:24)

正如本answer中对相关问题的建议,&#34; edge&#34;可以在Web.Config文件中设置模式。这将使其适用于从应用程序返回的所有HTML,而无需将其插入单个页面中:

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-UA-Compatible" value="IE=edge" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

对于IIS服务器,整个网站或特定应用程序,modifying the "HTTP Response Headers" using IIS Manager也可以完成同样的步骤。

答案 5 :(得分:16)

元标记解决方案对我们不起作用,但在响应标题中设置它:

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

答案 6 :(得分:10)

根据我最近的经验,关于这个主题的几点说明。我工作的大学用IE 8设置了适用于所有Intranet站点的兼容模式的笔记本电脑。我尝试添加元标记以禁用我的网站提供的页面的此模式,但IE始终忽略此标记。正如Lance在他的帖子中提到的,添加一个响应标题解决了这个问题。这是我根据HTML5样板文件方法设置标题的方法:

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

为了实际发送此标头,您必须确保在Apache中启用了mod_headers。如果你想确保打开这个mod,可以把它放在一个可以运行php的页面中:

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>

答案 7 :(得分:9)

IE8默认为intRAnet的标准模式和intRAnet的quirks模式。 如果您将doctype设置为xhtml transitional,则会忽略HTML元标记。 解决方案是在代码中添加HTTP标头。 这对我们有用。 现在我们的Intranet站点正在强制IE8以标准模式呈现应用程序。

添加到基页类的PageInit(ASP.net C#):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

参考: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html

答案 8 :(得分:3)

这是因为IE兼容性设置中的设置表明所有Intranet站点都应以兼容模式运行。您可以通过组策略解除此问题(或者只是在IE中简单地取消它),或者您可以设置以下内容:

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

显然不可能将兼容性视图设置更改为组策略,但它可以在注册表中更改,这个元标记对我来说很好,我必须使必需的属性作为一部分工作一个html表单,它在chrome和firefox中工作,但不是IE。

这是一个很好的视觉,了解哪些浏览器支持每个单独的html 5元素。

http://html5readiness.com/

请注意谷歌Chrome的一个共同点,它支持一切。希望这是有帮助的

答案 9 :(得分:0)

插入 作为标签下的第一个项目。

这会强制IE在IE的物理版本中呈现页面,并忽略浏览器&#34;模式设置&#34;。这可以在开发人员工具中设置,尝试将其更改为旧版本的IE进行测试,这应该被忽略,页面应该看起来完全一样。

答案 10 :(得分:0)

如果您有权访问服务器,最可靠的方法是在IIS中的服务器本身上执行此操作。进入IIS HTTP响应标头。加 名称:X-UA兼容
值:IE =边缘 这将覆盖您的浏览器和代码。

答案 11 :(得分:0)

如果您希望每个网页都加载选定的内容并正在使用asp.net。只需将其作为Views> shared> Layout.cshtml

中标题标签下的第一个标签应用即可

只是一个提示