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

Al *_*azi 367 html internet-explorer

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

Pek*_*ica 524

有"边缘"模式.

<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>
Run Code Online (Sandbox Code Playgroud)

从链接的MSDN页面:

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

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

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

老实说,我不完全理解为什么.但据此,目前最好的方法就是使用IE=8.

  • 对于那些找到这个答案,但无法让它为他们工作的人的建议.兼容性元标记*必须*是第一个元标记,并且标记之前可以没有IE条件语句.更多:http://tesmond.blogspot.com/2011/10/ie9-intranet-compatibility-mode-in.html (132认同)
  • 我发现,如果用户(或系统管理员)通过转到"工具 - >兼容性视图设置"打开兼容模式,并选中在兼容性视图中显示所有网站,则不起作用.要解决这个问题,我必须在HTTP响应中返回标题:`X-UA-Compatible:IE = edge` (75认同)
  • +1到speedplane - 默认情况下,Intranet站点的IE10兼容模式为ON - UGH ...感谢查找! (10认同)
  • 截至2012年8月6日,微软似乎在他们自己的网站上使用"IE = 10".如果您已经在IE10(预览版)中测试了您的网站,那么使用它是安全的.否则,你现在可能想要坚持`IE = 9`. (7认同)
  • 谢谢克里斯!当我终于阅读你的评论时,我正在努力奋斗30分钟.我先没有. (2认同)

bra*_*njp 91

经过几个小时对这些东西进行故障排除...以下是一些帮助我们从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>页面中的任何指令,基于您选择的版本呈现标准模式,并基于Quirks模式IE=5

  • content属性的可能值为:

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"


Ama*_*ere 66

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

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

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Run Code Online (Sandbox Code Playgroud)

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

  • 感谢关于样式表的警告,这引起了问题,我现在知道原因了! (3认同)

Eri*_*son 28

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

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-UA-Compatible" value="IE=edge" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

同样的步骤也可以通过使用IIS管理器为IIS服务器,整个网站或特定应用程序修改"HTTP响应标头"来完成.


Pet*_*man 27

我相信这会解决问题:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)


Lan*_*son 19

元标记解决方案不适合我们,但在响应标头中设置它:

header('X-UA-Compatible: IE=edge,chrome=1');
Run Code Online (Sandbox Code Playgroud)

  • 'chrome = 1'为+1; 我从来不知道这一点.对于它的价值,将其更改为IE = 10可以清除我网站上的一些渲染问题,IE = edge对此没有影响. (3认同)

rsw*_*ank 10

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

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

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
Run Code Online (Sandbox Code Playgroud)

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


Clo*_*ler 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>
Run Code Online (Sandbox Code Playgroud)

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

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>
Run Code Online (Sandbox Code Playgroud)