2010-11-25 111 views
55

我有这样的<head>IE兼容模式:“X-UA兼容的”标签“边缘”

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

这将迫使IE浏览器的最新渲染模式,但兼容模式被认为是最后一个?

我的意思是,例如:在IE8中使用此代码,它会强制它使用IE8或IE8兼容模式?

+0

从MSDN开始:“由于边缘模式文档使用Internet Explorer版本可用的最高模式显示网页,因此建议您仅应将此文档模式用于测试目的,不要将其用于生产用途“。 (http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx) – Steven 2012-04-30 22:32:24

回答

63

该标签将尝试强制浏览器使用浏览器支持的最新呈现模式。它不会触发兼容模式。

请注意,标签必须是头部中的第一个标签,否则将无法使用。 如果可能的话,这个事实有利于使用HTTP标头,因为HTTP标头中的顺序无关紧要。

如果浏览器剧照在兼容模式下,当您使用页眉或meta标记的这些东西一个是有可能的原因结束了:

  • 你缺少一个健全的doctype
  • 浏览器一直设置为始终使用兼容模式
  • 该网站托管在一个“内部网站”和Intranet站点的默认设定为

常浏览器兼容性查看设置

Microsoft认为至少192.168.x.x位于“Intranet站点”上。 IE8/IE9中Intranet站点的默认值是使用兼容模式。对于许多商业应用程序来说,这是一个巨大的问题,因为即使使用此元标记,程序员也无法覆盖此选项。 (“在Compatitiblity查看显示Intranet站点”不是由元标记或HTTP标头重写 - 浏览器是在兼容性视图的完整控制在这种情况下)

Compatibility View Settings

总是添加该元标记或HTTP头?

使用此元标记的另一个好处是从浏览器的地址栏中删除“兼容视图”图标。至少您的用户不能使用该按钮决定渲染模式。

+2

根据此http://ie.microsoft.com/testdrive/ieblog/2010/Mar/ 02_HowIE8DeterminesDocumentMode_3.png它应该可以被标题覆盖。 – 2012-10-29 10:14:53

+0

我也尝试过HTTP标头,如果页面是从“Intranet站点”提供的,那么如果选中“在兼容性视图中显示Intranet站点”复选框,则标头不会除去兼容模式。如果你想让它与标题一起工作,我非常想知道你是如何做到的,以改善这里的事情。 :) – oldwizard 2012-11-20 22:49:31

+0

我创建了一个Asp.Net DLL来修复MS列表中的国际客户端。你用什么语言? – 2012-11-21 08:37:30

-3

单独使用Edge关键字有什么意义?我的意思是,如果您希望IE使用最新的渲染引擎,那么只需删除整个元标记即可。

否则,它应该是类似的东西(这将让IE8表现得像IE7和IE9和更新将照常上班):

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

即使你未选中在兼容性视图“显示Intranet站点“选项,并且在响应头中包含X-UA兼容性,您的浏览器可能会默认为”兼容性视图“ - 您的组策略。看看您的控制台的以下消息:

HTML1203: xxx.xxx has been configured to run in Compatibility View through Group Policy.

其中xxx.xxx是您的网站(即test.com)的域。如果您看到此信息,那么您的域的组策略将设置为任何以test.com结尾的站点都将自动以兼容模式呈现,而不管文档类型,标题等。

有关详细信息,请参阅以下链接解释HTML代码):http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx

0

我不是专家,但通过试验和错误:

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

解决了这个问题对我来说。我在网站和webapps上使用了它,并且它停止了IE8进入兼容模式,并在IE10和IE11中显示为“标准”。