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

我刚刚安装了IE9测试版,在我创建的一个特定网站(HTML5)上,IE9跳转到兼容模式,除非我手动告诉它不要这样做。我已经尝试删除网站的几个部分,但没有变化。包括删除所有CSS包含。在我的其他网站上,一切都很顺利。

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

无论如何。跳转到兼容模式的站点:http://alliancesatwar.com/guide/
其中它呈现正确的:http://geuze.name/basement/(我不能发布超过1个超链接)

两者使用相同的doctype和ALL.这些网站有很多共同之处(除了外观),使用相同的基本模板(编码,元标签,文档类型和相同的JavaScript)

如果有人能给我一个答案,那就太好了!在IE7模式下渲染的HTML5网站非常漂亮。跛足的。

146058 次浏览

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

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

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

在我看来很好:

alt text

你确定你没有在全局设置或什么的?这是Windows 7上测试版的全新安装。开发人员工具报告页面默认为IE9标准模式。

我在IE9文档模式下工作。

如果没有X-UA-Compatible Header/Meta来设置显式DocumentMode,您将获得基于以下内容的模式:

  • 用户以前是否在该域中单击过“兼容性视图”按钮;
  • 也许这也是由于网站上的一些其他内容导致IE8/9的渲染器崩溃并退回到旧的渲染器而自动发生的。
  • 用户是否选择默认将所有站点置于兼容性视图中;
  • IE是否认为该站点位于您的Intranet上,因此默认为兼容性视图;
  • 有问题的网站是否在Microsoft自己的需要兼容性视图的网站列表中。

您可以从IE菜单的“工具->兼容性视图设置”中更改这些设置。当然,菜单现在被偷偷地隐藏了,所以你不会看到它,直到你按下Alt.

作为网站作者,如果您确信您的网站符合标准(在其他浏览器中呈现良好,并使用功能嗅探来决定使用哪种浏览器解决方案),我建议使用:

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

或HTTP标头:

X-UA-Compatible: IE=Edge

要获得最新的渲染器,无论使用的是哪个IE版本。

我把

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

之后的第一件事

<head>

(我在什么地方读到过,我想不起来了)

我简直不敢相信它真的有用!

位于http://www.html-5.com/index.html的站点确实具有X-UA-Compatible Meta标记,但仍进入兼容性视图,如地址栏中的“ Torn Page ”图标所示。如何让菜单选项强制IE9(最终版9.0.81 12.16421)在标准模式下呈现页面?我试着右键单击那个被撕毁的页面图标以及“ Alt ”键来显示Rene Geuze提到的其他菜单选项,但这些都不起作用。

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

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

第二个主要的想法是,在IE9中有一个错误,这意味着元标签将无法工作,而不是这个解决方案,尝试这个

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

    LoadModule headers_module modules/mod_headers.so
    
  • add the following lines

    <IfModule headers_module>
    Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
    
  • save/restart your Apache server,

  • browse to your page with IE9, use tools like wireshark or fiddler or use IE developer tools to check the header is there

我在一个单独的StackOverflow主题上发表了这条评论,但我认为它值得在这里重复:

对于我们内部的ASP.NET应用程序,在Web页面、web.config或代码隐藏中添加“ X-UA-Compatible ”标记完全没有影响。

唯一的对我们起作用的是在IE8中手动关闭此设置:

enter image description here

(叹气)

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

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

我不情愿的解决方案是测试浏览器是否支持HTML5(通过创建一个画布,并测试它是否有效),如果无效,则向用户显示以下消息:

enter image description here

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

或者让用户使用Chrome.;-)

顺便说一句,在更现代的网站上,如果您按照样板文件在HTML标记上使用条件语句,出于某种原因,这将导致IE9默认为兼容模式。这里的修复方法是将条件语句从HTML标记中移出,并将它们添加到body标记中,换句话说,将它们从head部分中移出。这样,您仍然可以在样式表中使用这些类来针对较旧的浏览器。