如何在IE中禁用兼容性视图


76

我想知道如何阻止正在使用IE 8的用户进入兼容模式?

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

我找到了这个标签,我认为这迫使人们停留在IE-8模式下,但我不太确定,因为我有IE 9,所以无法检查。

如果人们处于IE 9模式,我强迫他们不要进入IE 8或IE 7兼容模式?

我试图将上面的行放在我的代码中,然后转到IE 9->工具->兼容性视图(显示为灰色)

但是“兼容性视图设置”并未变灰,看来您可以在此添加站点。

那不应该禁用它吗?


15
@ Sparky672-是的,我愿意。我不支持IE 7,并且显示浏览器已过期警告。我通过可用性研究发现,大多数人并没有释放他们可能处于兼容模式(并且实际上不了解它们的设置),并且当您告诉他们其浏览器已过时并且他们认为他们正在使用IE 8时(研究期间使用的是最新的浏览器),他们很快就会感到困惑。最好的解决方案是迫使他们回到IE 8/9(无论如何他们都认为他们正在运行)
chobo2 2011年

Answers:


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

应该强制您的网页以IE8标准呈现。用户可以将站点添加到兼容性列表中,但是此标记优先。

一种快速的检查方法是加载页面并在地址栏中输入以下内容:

javascript:alert(navigator.userAgent) 

如果您在字符串中看到IE7,则它是在兼容模式下加载的,否则就不会加载。


2
如果他们使用IE 9,将会把他们设置为IE 8,会发生什么?
chobo2 2011年

1
如果用户在IE9中使用它,它将以IE8标准模式显示。您也可以使用IE9中的F12开发人员工具栏进行验证。
Sriranga Chidambara

92
更好地使用<meta http-equiv =“ X-UA-Compatible” content =“ IE = edge” />另外,如果该网站托管在Microsoft认为是“内部网”的地方,那么您仍然会搞砸,它仍将显示在“兼容性”中视图。唯一的替代方法是取消选中工具-兼容性视图设置中的“在兼容性视图中显示Intranet站点”复选框。IE8 +中的默认设置确实很臭。
oldwizard 2011年

5
我同意那个。只是被“在兼容性视图中显示Intranet站点”默认设置(在我的情况下为IE9)所吸引。
德里克·莫里森

4
我已选中“在兼容性视图中显示Intranet站点”,但是X-UA-Compatible元标记似乎覆盖了它。
贾斯汀·斯基尔斯

91

您需要做的就是在IE中强制禁用CM-只需粘贴以下代码(在IE9和cm之下将被禁用):

<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


3
这为我节省了Twitter Bootstrap和IE兼容性。仅供参考-这必须是FIRST元标记。
nope_four

11
这与<meta http-equiv =“ X-UA-Compatible” content =“ IE = edge” />不一样吗?
2013年

4
注意不要在此标记之前使用任何条件注释。否则它将无法正常工作!发现提示有:stackoverflow.com/questions/3449286/...
卡尔·阿德勒

73

这应该足以迫使IE用户放弃任何IE版本的兼容模式:

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

但是,有一些警告需要注意:

  • 上面的meta标签应作为的第一个标签<head>包含在内。只能将<title>标签放置在标签上方。

如果不这样做,则会在IE9开发工具上收到错误消息:X-UA-Compatible META tag ignored because document mode is already finalized.

  • 如果您要验证此标记,请确保记得meta使用/>而不是just关闭标记>

  • 从开始IE11,边缘模式是首选的文档模式。要支持/启用该功能,请使用HTML5文档类型声明<!doctype html>

  • 如果需要支持webfonts IE7,请确保使用<!DOCTYPE html>。我已经对其进行了测试,发现使用时渲染WebfontsIE7变得非常不可靠<!doctype html>

Google Chrome浏览器内嵌框架的使用很流行,但不幸的是,它将在本月(2014年1月)的某个时间删除。

<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1">

广泛的相关信息在这里。将其用作第一个元标记的技巧在此处先前提到的源上,该源已更新。


9

如果您使用的是ASP.NET MVC,我Response.AddHeader("X-UA-Compatible", "IE=edge,chrome=1")在_Layout的代码块中发现可以很好地工作:

@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发布的版本。

我只是会对他的回答发表评论,但我的声誉还不够高...


3

在Apache中实现此目标的另一种方法是将以下行放入.htaccess您网站的根文件夹中(或Apache的配置文件中)。

BrowserMatch "MSIE" isIE
BrowserMatch "Trident" isIE
Header set X-UA-Compatible "IE=edge" env=isIE

这需要您启用mod_headersmod_setenvif模块。

多余的HTTP标头仅被发送到IE浏览器,而没有其他任何标头。


1

在JSF中,我使用了:

<h:head>
    <f:facet name="first">
        <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
    </f:facet>

    <!-- ... other meta tags ... -->

</h:head>

0

在页面上添加标签将无法控制Internet控制面板(选择工具->选项时出现的对话框)中的UI。如果您要查看的主页可能是google.com,msn.com,about:blank或example.com,则Internet控制面板无法知道您的页面内容,因此不会下载它在后台。

参阅MSDN上的该文档,其中讨论了兼容模式以及如何为您的站点关闭它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.