如何在 IE 中禁用兼容性视图
Posted
技术标签:
【中文标题】如何在 IE 中禁用兼容性视图【英文标题】:How to disable Compatibility View in IE 【发布时间】:2011-09-14 23:48:19 【问题描述】:我想知道如何阻止使用 IE 8 的人进入兼容模式?
<meta http-equiv="X-UA-Compatible" content="IE=8" />
我找到了这个标签,我认为这会迫使人们保持 IE-8 模式,但我不太确定,也无法检查,因为我有 IE 9。
如果人们处于 IE 9 模式,我会强制他们不要进入 IE 8 或 IE 7 兼容模式?
我尝试将上面的行放在我的代码中,然后转到 IE 9 -> 工具 -> 兼容性视图(灰色)
但“兼容性视图设置”并未灰显,您似乎可以通过那里添加网站。
那不应该禁用吗?
【问题讨论】:
@Sparky672 - 是的,我愿意。我不支持 IE 7 并显示浏览器已过期警告。我通过可用性研究发现,大多数人并没有发布他们可能处于兼容模式(并且实际上不知道他们设置了它),当你告诉他们他们的浏览器已经过时并且他们认为他们正在使用 IE 8(研究时的最新浏览器)他们很快就会感到困惑。最好的解决方案是强制他们回到 IE 8/9(他们可能认为他们正在运行的东西) 【参考方案1】:您只需要强制禁用 C.M.在 IE 中 - 只需粘贴此代码(在 IE9 和 c.m. 下将被禁用):
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
来源:http://twigstechtips.blogspot.com/2010/03/css-ie8-meta-tag-to-disable.html
【讨论】:
这为我节省了 Twitter Bootstrap 和 IE 兼容性。仅供参考 - 这需要是第一个元标记。 这不是和 一样吗? 注意不要在这个标签之前使用任何条件 cmets。否则它不起作用!在那里找到了提示:***.com/questions/3449286/…【参考方案2】:这应该足以强制IE
用户在任何IE
版本中放弃兼容模式:
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
但是,有几点需要注意:
上面的元标记应该作为<head>
下的第一个标记。只有<title>
标签可以放在它上面。
如果您不这样做,您将在IE9
Dev Tools: X-UA-Compatible META tag ignored because document mode is already finalized.
上收到错误消息
如果您想要验证此标记,请确保您记得使用 />
而不仅仅是 >
关闭 meta
标记。
从IE11
开始,边缘模式是首选文档模式。要支持/启用它,请使用 HTML5 文档类型声明 <!doctype html>
。
如果您需要在IE7
上支持网络字体,请确保使用<!DOCTYPE html>
。我已经对其进行了测试,发现在使用<!doctype html>
时,在IE7
上渲染网络字体变得非常不可靠。
Google Chrome Frame 的使用很流行,但不幸的是,它将在本月的某个时候(2014 年 1 月)停止使用。
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1">
广泛的相关信息here。使用它作为第一个元标记的提示在前面提到的源 here 上,该源已更新。
【讨论】:
我没有看到“X-UA-Compatible META 标签被忽略”的消息,但它使用的是 IE7 模式。当我把这个标签上移时——大部分时间它使用 IE11,但有时仍然使用 IE7。【参考方案3】:<meta http-equiv="X-UA-Compatible" content="IE=8" />
应该强制您的页面以 IE8 标准呈现。用户可以将站点添加到兼容性列表中,但此标记将优先。
一种快速的检查方法是加载页面并在地址栏输入以下内容:
javascript:alert(navigator.userAgent)
如果您在字符串中看到 IE7,则它正在以兼容模式加载,否则不是。
【讨论】:
如果他们使用 IE 9 这会将他们设置为 IE 8 会发生什么? 如果用户在 IE9 中使用它,它将以 IE8 标准模式显示。也可以使用IE9中的F12开发者工具栏进行验证。 更好地使用 此外,如果该站点托管在 Microsoft 认为是“Intranet”的地方,那么您就是搞砸了,它仍然会显示在兼容性视图中。覆盖它的唯一方法是取消选中“工具 - 兼容性视图”设置中的“在兼容性视图中显示 Intranet 站点”复选框。 IE8+ 中的默认设置真的很糟糕。 我同意这一点。刚刚被“在兼容性视图中显示 Intranet 站点”默认设置(在我的情况下为 IE9)所吸引。 我选中了“在兼容性视图中显示 Intranet 站点”,但 X-UA-Compatible 元标记似乎覆盖了它。【参考方案4】:如果您使用的是 ASP.NET MVC,我在 _Layout 的代码块中发现 Response.AddHeader("X-UA-Compatible", "IE=edge,chrome=1")
可以很好地工作:
@Code
Response.AddHeader("X-UA-Compatible", "IE=edge,chrome=1")
End Code
<!DOCTYPE html>
everything else
【讨论】:
【参考方案5】:FelixFett 给出的答案对我有用。重申:
<meta http-equiv="X-UA-Compatible" content="IE=11; IE=10; IE=9; IE=8; IE=7; IE=EDGE" />
我将它作为我代码中的第一个“元”标签。我添加了 10 和 11,因为它们是现在为 Internet Explorer 发布的版本。
我本来只想评论他的回答,但我没有足够高的声誉......
【讨论】:
【参考方案6】:在 Apache 中实现此目的的另一种方法是将以下几行放入您网站根文件夹(或 Apache 的配置文件)中的 .htaccess
中。
BrowserMatch "MSIE" isIE
BrowserMatch "Trident" isIE
Header set X-UA-Compatible "IE=edge" env=isIE
这要求您启用 mod_headers
和 mod_setenvif
模块。
额外的 HTTP 标头仅发送到 IE 浏览器,其他浏览器均不发送。
【讨论】:
【参考方案7】:在 JSF 中我使用过:
<h:head>
<f:facet name="first">
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</f:facet>
<!-- ... other meta tags ... -->
</h:head>
【讨论】:
【参考方案8】:向您的页面添加标签不会控制 Internet 控制面板中的 UI(当您选择工具 -> 选项时出现的对话框)。如果您正在查看的主页可能是 google.com、msn.com、about:blank 或 example.com,则 Internet 控制面板无法知道您的页面内容可能是什么,并且不会下载它在后台。
查看this document on MSDN,其中讨论了兼容模式以及如何为您的网站关闭它。
【讨论】:
以上是关于如何在 IE 中禁用兼容性视图的主要内容,如果未能解决你的问题,请参考以下文章