【问题标题】:How to disable Compatibility View in IE如何在 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(他们可能认为他们正在运行的东西)

标签: internet-explorer internet-explorer-8 internet-explorer-9 x-ua-compatible ie-compatibility-mode


【解决方案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。否则它不起作用!在那里找到了提示:stackoverflow.com/questions/3449286/…
【解决方案2】:

这应该足以强制IE 用户在任何IE 版本中放弃兼容模式:

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

但是,有几点需要注意:

  • 上面的元标记应该作为&lt;head&gt;下的第一个标记。只有&lt;title&gt; 标签可以放在它上面。

如果您不这样做,您将在IE9 Dev Tools: X-UA-Compatible META tag ignored because document mode is already finalized. 上收到错误消息

  • 如果您想要验证此标记,请确保您记得使用 /&gt; 而不仅仅是 &gt; 关闭 meta 标记。

  • IE11 开始,边缘模式是首选文档模式。要支持/启用它,请使用 HTML5 文档类型声明 &lt;!doctype html&gt;

  • 如果您需要在IE7 上支持网络字体,请确保使用&lt;!DOCTYPE html&gt;。我已经对其进行了测试,发现在使用&lt;!doctype html&gt; 时,在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_headersmod_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,其中讨论了兼容模式以及如何为您的网站关闭它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-28
            • 1970-01-01
            • 2012-06-05
            • 2012-08-29
            • 1970-01-01
            • 2020-04-06
            • 1970-01-01
            • 2019-03-06
            相关资源
            最近更新 更多