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

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

此外,不要手动设置,因为那么IE9记得用户设置,你不能把它回到自动(或至less我还没有find如何,甚至没有通过私人浏览和清空caching)

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

两者都使用相同的doctype和所有。 这些网站使用相同的基本模板(编码,元标记,文档types和相同的JavaScript)有很多共同点(除外观)

如果有人有我的答案,这将是非常好的! 在IE7模式下呈现的HTML5网站非常糟糕。

为我工作在IE9文档模式。

如果没有X-UA-Compatible头文件/ meta来设置一个显式的documentMode,你将得到一个基于下面的模式:

  • 用户之前是否点击了该域中的“兼容性视图”button;
  • 也许也是由于网站上的其他内容导致IE8 / 9的渲染器崩溃并回落到旧的渲染器,这是否自动发生;
  • 用户是否select默认将所有网站放在兼容性视图中;
  • IE是否认为该站点在您的Intranet上,因此默认为兼容性视图;
  • 相关网站是否在微软自己的需要兼容性视图的网站列表中。

您可以从IE菜单的“工具 – >兼容性视图设置”中更改这些设置。 当然,这个菜单现在隐藏起来了,所以直到你按下Alt时才会看到它。

作为网站作者,如果您确信自己的网站符合标准(在其他浏览器中很好地呈现,并使用function嗅探来决定使用哪种浏览器解决方法),我build议您使用:

 <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> 

(我读了它,我不记得了)

我不能相信它的工作!

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

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

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

我已经发布了这个评论在一个单独的StackOverflow线程,但认为这是值得重复在这里:

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

唯一对我们有用的是在IE8中手动closures这个设置:

在这里输入图像描述

(叹。)

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

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

我不情愿的解决scheme是testing浏览器是否支持HTML 5(通过创buildcanvas并testing其是否有效),并在用户无效时向用户显示此消息:

在这里输入图像描述

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

或者让用户使用Chrome。 😉

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

除了更现代化的网站,如果你在你的html标签上使用条款语句,那么这将会由于某种原因导致ie9默认为兼容模式。 这里的解决方法是将你的条件语句从html标签中移出,并将它们添加到body标签中,换句话说就是将其添加到head标签中。 这样,您仍然可以在样式表中使用这些类来定位旧版浏览器。

看起来对我很好:

替代文字

你确定你没有在全球设置或什么? 这是在Windows 7上testing版的全新安装。开发者工具报告该页默认为IE9标准模式。

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

首先,这个解决scheme是围绕Apache服务器进行的。

第二个主要想法是IE9中存在一个错误,这意味着meta标签将不起作用,而不是这个解决scheme

  • find/打开你的httpd.conf
  • 取消注释/或添加以下行

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

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

  • 使用IE9浏览您的页面,使用wireshark或fiddler等工具或使用IE开发者工具检查标题是否存在
    Interesting Posts