为什么IE9会在我的网站上切换到兼容模式?

时间:2010-09-16 11:52:22

标签: html5 css3 internet-explorer-9 compatibility-mode

我刚刚安装了IE9 beta并且在我创建的特定网站上(HTML5)IE9跳转到兼容模式,除非我手动告诉它不要。我试过删除网站的几个部分,但没有变化。包括删除所有CSS包括。在我的其他网站上,它很好。

此外,不要手动设置,因为IE9会记住用户设置,你不能将其恢复为自动(或者至少我没有找到,甚至没有通过隐私浏览和清空缓存)

反正。它跳转到兼容模式的网站:http://alliancesatwar.com/guide/
它呈现正确的地方:http://geuze.name/basement/(我不能发布超过1个超链接)

两者都使用相同的doctype和全部。这些网站使用相同的基本模板(编码,元标记,doctype和相同的javascript)有很多共同之处(除了外观)

如果有人对我有答案,那就太好了!在IE7模式下呈现的HTML5网站非常......蹩脚。

8 个答案:

答案 0 :(得分:262)

适合我在IE9 documentMode中使用。

如果没有X-UA-Compatible标头/元来设置显式的documentMode,您将获得一个基于以下模式的模式:

  • 用户是否在之前点击了该域中的“兼容性视图”按钮;
  • 也许是因为网站上的其他内容导致IE8 / 9的渲染器崩溃并重新回到旧的渲染器,这是否自动发生;
  • 默认情况下,用户是否选择将所有网站置于兼容性视图中;
  • IE是否认为该网站位于您的Intranet上,因此默认为兼容性视图;
  • 相关网站是否在Microsoft自己的需要兼容性视图的网站列表中。

您可以从'工具 - >更改这些设置IE菜单中的兼容性视图设置。当然,这个菜单现在是偷偷摸摸的隐藏,所以在你按Alt键之前你不会看到它。

作为网站作者,如果您确信您的网站符合标准(在其他浏览器中渲染效果良好,并使用功能嗅探来决定使用哪种浏览器变通办法),我建议您使用:

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

或HTTP标头:

X-UA-Compatible: IE=Edge

获取最新的渲染器,无论IE版本在使用中。

答案 1 :(得分:33)

我把

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

之后的第一件事

<head>

(我在某处阅读,我记不清了)

我简直不敢相信它确实有用!!

答案 2 :(得分:22)

要强制IE在IE9标准模式下渲染,您应该使用

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

某些情况可能会导致IE9跳转到兼容模式。默认情况下,这可能发生在Intranet站点上。

答案 3 :(得分:6)

我已在单独的StackOverflow线程上发布此评论,但认为值得在此重复:

对于我们内部的ASP.Net应用程序,在网页,web.config或代码隐藏中添加“X-UA-Compatible”标记完全没有区别。

对我们有用的事情是在IE8中手动关闭此设置:

enter image description here

(叹气。)

这个问题似乎只发生在IE8&amp;内联网站点上的IE9。外部网站将正常运行并使用正确版本的IE8 / 9,但对于内部网站,IE9突然决定它实际上是IE7,并且没有任何HTML 5支持。

不,我也不太明白这个逻辑。

我不情愿的解决方案是测试浏览器是否支持HTML 5(通过创建画布,并测试它是否有效),并在用户无效时显示此消息:< / p>

enter image description here

它不是特别用户友好,但让用户关闭这个烦人的设置 似乎是让他们正确运行内部HTML 5网络应用程序的唯一方法。

或让用户使用Chrome。 ; - )

答案 4 :(得分:1)

http://www.HTML-5.com/index.html处的网站确实具有X-UA兼容的元标记,但仍会进入兼容性视图,如地址栏中的“撕裂页面”图标所示。如何获得菜单选项以强制IE 9(最终版本9.0.8112.16421)在标准模式下呈现页面?我试图右键单击那个撕裂的页面图标以及“Alt”键技巧来显示Rene Geuze提到的其他菜单选项,但这些选项不起作用。

答案 5 :(得分:1)

另外在更现代的网站上,如果你在你的html标签上使用条件语句按照样板,这将由于某种原因导致ie9默认为兼容模式。这里的修复是将条件语句移出html标记并将它们添加到body标记中,换句话说,将其添加到head部分之外。这样,您仍然可以在样式表中使用这些类来定位旧浏览器。

答案 6 :(得分:0)

对我来说很好看:

alt text

您确定没有全局设置或其他内容吗?这是Windows 7上的测试版的干净安装。开发人员工具报告该页面默认为IE9标准模式。

答案 7 :(得分:0)

我最近不得不解决这个问题,这就是我所做的:

首先,这个解决方案是围绕调整Apache服务器。

第二个主要的想法是IE9中有一个错误,这意味着meta标签不起作用,而不是这个解决方案试试这个

  • 查找/打开您的httpd.conf
  • 取消注释/或添加以下行

    LoadModule headers_module modules/mod_headers.so
    
  • 添加以下行

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
    
  • 保存/重启Apache服务器,

  • 使用IE9浏览您的页面,使用wiresharkfiddler等工具或使用IE开发人员工具检查标题是否存在