IE9 会在某些网站上显示兼容模式按钮,但其他网站则不会。对于其他网站,我仍然可以通过“工具”>“兼容性视图设置”添加它来启用它,然后它就会按预期运行。
为什么这个按钮不总是显示?有办法解决这个问题吗?
答案1
按钮的存在取决于这种类型的元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
文档兼容模式
在 Internet Explorer 的最新版本中,这些模式可以控制网页支持的功能以及页面的显示方式。
IE=EmulateIE8
模式告诉 Internet Explorer 使用指令来确定如何呈现内容。标准模式指令在 Internet Explorer 8 标准模式下显示,而怪异模式指令在 IE5 模式下显示。与 IE8 模式不同,模拟 IE8 模式尊重该指令。IE=EmulateIE7
告诉 Internet Explorer 使用指令来确定如何呈现内容。标准模式指令在 Internet Explorer 7 标准模式下显示,而怪异模式指令在 IE5 模式下显示。与 IE7 模式不同,模拟 IE7 模式尊重该指令。对于许多网站来说,这是首选的兼容模式:IE=5
呈现内容就像是通过 Internet Explorer 7 的怪癖模式显示的一样,这与 Internet Explorer 5 中显示内容的方式非常相似。IE=7
无论页面是否包含指令,都会像 Internet Explorer 7 的标准模式一样呈现内容。IE=8
支持多项既定标准,包括 W3C 层叠样式表 2.1 级规范和 W3C 选择器 API;同时也对 W3C 层叠样式表 3 级规范(工作草案)和其他新兴标准提供有限的支持。IE=9
为成熟和新兴的行业标准提供最高级别的支持,包括 HTML5(工作草案)、W3C 层叠样式表 3 级规范(工作草案)、可缩放矢量图形 (SVG) 1.0 规范等。IE=Edge
告诉 Internet Explorer 以最高可用模式显示内容。对于 Internet Explorer 8,这相当于 IE8 模式。
如果 Internet Explorer 的未来版本(假设)支持更高的兼容模式,则设置为边缘模式的页面将以该版本支持的最高模式显示。使用 Internet Explorer 8 查看时,这些页面将以 IE8 模式显示;使用 Internet Explorer 9 查看时,这些页面将以 IE9 模式显示。
概括
IE 将不是如果出现以下情况,则显示兼容性视图按钮:
- 元标记的内容等于您正在使用的 IE 版本;或者
- meta标签的内容设置为
IE=edge
。
参考
答案2
除了<meta>
标签解释之外在 Brian 的回答中:
如果这发生在本地(内部网)站点上:似乎默认首选项总是使内部网站点以兼容模式运行,更糟糕的是,根本不显示按钮。
禁用该功能“在兼容性视图中显示 Intranet 站点”设置使按钮也出现在本地站点上,因此您可以将其关闭。请注意,兼容性视图设置仅在“完整”菜单中列出(按 Alt-T),而不是在速记齿轮图标中:
或者,使 IE 无法识别内部网站点不再。
答案3
根据这一综合有关兼容性视图的 MSDN 文章,以下列表介绍了启用兼容性视图的不同方法:
- 在查看网页时,单击地址栏中的“兼容性视图”按钮。显示时,此按钮出现在“刷新”按钮的左侧,并包含一张破纸的图像。这将为正在查看的网站域中的所有文档启用兼容性视图。
- 兼容性视图设置中的“以兼容模式显示所有网站设置”已启用。
- 启用“使用兼容性视图自动恢复页面布局错误”设置,网页停止响应或浏览器崩溃。发生这种情况时,Internet Explorer 在从问题中恢复后会在兼容性视图中打开页面。
- 您的计算机管理员已启用用于标识要在兼容性视图中打开的站点的组策略。
- 您已使用 F12 开发人员工具更改浏览器模式,以将 Internet Explorer 识别为早期版本的浏览器。
- 兼容性视图列表已启用,它定义了在兼容性视图中自动显示的网站列表。
要禁用或覆盖兼容性视图,您必须执行上述建议的反向操作。
兼容性视图列表是一个由 Microsoft 维护的 XML 文件。
要从兼容性视图列表中删除您的网站(或对从列表中删除您的网站提出异议),请让网站所有者验证域网站是否出现在兼容性视图列表中。如果确实如此,请发送电子邮件至[电子邮件保护]包含以下信息:
所有者姓名 公司名称 公司名称 街道地址 电子邮件地址 电话号码 网站地址
Microsoft 将审查所提供的信息并在下次预定的更新时将您的网站从兼容性视图列表中删除。
答案4
我花了一段时间试图确定为什么兼容性视图图标在我公司的某个域上不可用,因为它似乎不符合任何该问题的其他答案中描述的条件。
解释是“X-UA-Compatible”不必是元标记。它也可以指定为 HTTP 标头(不是 HTML 内容的一部分),而我遇到问题的域就是这种情况。
此 MS 页面有更多详细信息,其中许多出现在 SgtOJ 的答案中:http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx