IE 兼容模式:'X-UA-Compatible' 标签 'Edge'

Posted

技术标签:

【中文标题】IE 兼容模式:\'X-UA-Compatible\' 标签 \'Edge\'【英文标题】:IE Compatibility Mode: 'X-UA-Compatible' tag 'Edge'IE 兼容模式:'X-UA-Compatible' 标签 'Edge' 【发布时间】:2011-05-15 14:12:03 【问题描述】:

我有这个在<head>:

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

它会强制 IE 使用最新的渲染模式,但是兼容模式是否被认为是最后一种?

我的意思是,例如:将这段代码与 IE8 一起使用,它会强制它使用 IE8 或 IE8 兼容模式?

【问题讨论】:

来自 MSDN:“由于边缘模式文档使用用于查看它们的 Internet Explorer 版本可用的最高模式显示网页,因此建议您仅将此文档模式用于测试目的。不要将其用于生产用途。” (msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx) 【参考方案1】:

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

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

如果在您使用标题或元标记时浏览器仍处于兼容模式,则可能是以下原因之一:

你缺少一个理智的文档类型 浏览器已设置为始终使用兼容模式 该站点托管在“Intranet 站点”上,并且已设置 Intranet 站点的默认设置

更改浏览器兼容性视图设置

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

总是添加此元标记或 http 标头?

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

【讨论】:

根据ie.microsoft.com/testdrive/ieblog/2010/Mar/…,它应该可以被标题覆盖。 我也尝试过 HTTP 标头,如果页面是从“Intranet 站点”提供的,如果选中“在兼容性视图中显示 Intranet 站点”复选框,则标头不会删除兼容模式。如果你让它与一个标题一起工作,我非常想知道你是如何做到这一点来改进这里的。 :) 我创建了一个 Asp.Net dll 来为 MS 列表中的国际客户修复它。你使用什么语言? 很好,如果服务器托管在 192.168.x.x 范围内,它可以工作吗? C# 或 vb 无关紧要。 不可覆盖?绝对鄙视 IE 的另一个理由。【参考方案2】:

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

否则,它应该看起来像这样(这将使 IE8 的行为类似于 IE7 和 IE9,并且更新的版本将照常工作):

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

【讨论】:

您是否愿意澄清指向描述此内容的链接?在我见过的情况下,您可以指定 IE=8(或其他数字)来请求 IE 中接近 IE8 的行为,或者指定 IE=edge 来请求 IE 中使用的实际版本的本机行为。 @Rasmus,重点是,您实际上可以指定多种模式。以下是相关讨论(内有更多链接):***.com/questions/3413629/… Edge 用于使用户无法启用兼容模式。这对于规范 IE 的行为非常有帮助。兼容模式可能会破坏某些东西(如布局或 javascript),而 Edge 可以帮助您一起避免这种情况。如果您不指定元标记,则用户可以选择兼容模式并可能破坏您的页面 不确定否决票。 unclenton 是准确的,他的 cmets 很好地解释了他的观点。我的用例:我希望 IE8 在 IE7 下呈现,但我不想强制 IE9 和 10 也这样做。 IE 使用 IE7 文档模式显示 Intranet 站点。 IE=Edge(或其他设置)克服了它。【参考方案3】:

即使您已取消选中“在兼容性视图中显示 Intranet 站点”选项,并且在响应标头中包含 X-UA-Compatible,您的浏览器仍可能默认为“兼容性视图”的另一个原因 - 您的组政策。查看您的控制台以获取以下消息:

html1203:xxx.xxx 已通过组策略配置为在兼容性视图中运行。

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

欲了解更多信息,请参阅以下链接(解释 html 代码):http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx

【讨论】:

通过测试我发现兼容性视图组策略设置强制 Internet Explorer 使用“Mozilla/4.0 (compatible; MSIE 7.0;..." 作为请求的用户代理,但是X-UA-Compatible IE=Edge 元标记将导致页面使用 IE 的实际用户代理呈现。因此任何服务器端浏览器检测都会检测 IE 7,而客户端浏览器检测将检测 IE 的实际版本。跨度> 【参考方案4】:

我不是专家,但通过反复试验:

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

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

【讨论】:

以上是关于IE 兼容模式:'X-UA-Compatible' 标签 'Edge'的主要内容,如果未能解决你的问题,请参考以下文章

X-UA-Compatible 设置为 IE=edge,但仍不停止兼容模式

解决ie兼容渲染的小技巧

IE9和IE9兼容性查看浏览器模式的区别

X-UA-Compatible IE 浏览器默认文档模式设置

360浏览器 兼容模式 极速模式

IE兼容模式弧度兼容