我刚刚安装了 IE9 beta 并且在我创建的特定站点 (HTML5) 上,IE9 会跳转到兼容模式,除非我手动告诉它不要这样做。我尝试删除网站的几个部分,但没有任何变化。包括删除所有 CSS 包含。在我的其他网站上,一切正常。
另外,不要手动设置,因为这样 IE9 会记住用户设置并且您无法将其转回自动(或者至少我还没有找到方法,甚至没有通过隐私浏览和清空缓存)
反正。跳转到兼容模式的站点:http://alliancesatwar.com/guide/
正确呈现的站点:http://geuze.name/basement/(我不能发布超过 1 个超链接)
两者都使用相同的 doctype
。这些网站有很多共同点(除了外观)使用相同的基本模板(编码、元标记、文档类型和相同的 javascript)
如果有人能回答我,那就太好了!一个在 IE7 模式下呈现的 HTML5 网站是相当...蹩脚的。
适用于我的 IE9 文档模式。
如果没有 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 版本。
我放
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
之后的第一件事
<head>
(我在某处读过,我不记得了)
我简直不敢相信它确实有效!
meta
语句之前的 <head>
中有 <script>
,它将被忽略 (IE=edge)。
要强制 IE 以 IE9 标准模式呈现,您应该使用
<meta http-equiv="X-UA-Compatible" content="IE=edge">
某些情况可能会导致 IE9 跳入兼容模式。默认情况下,这可能发生在 Intranet 站点上。
IE=edge
,它始终调用可用的最新引擎。
我已在单独的 StackOverflow 线程上发布了此评论,但认为值得在这里重复:
对于我们内部的 ASP.Net 应用程序,在网页、web.config 或代码隐藏中添加“X-UA-Compatible”标签完全没有区别。
唯一对我们有用的是在 IE8 中手动关闭此设置:
https://i.stack.imgur.com/gdyg2.png
(叹。)
这个问题似乎只发生在 Intranet 站点上的 IE8 和 IE9 上。外部网站可以正常工作并使用正确版本的 IE8/9,但对于内部网站,IE9 突然确定它实际上是 IE7,并且不支持任何 HTML 5。
不,我也不太明白这个逻辑。
我不情愿的解决方案是测试浏览器是否支持 HTML 5(通过创建画布并测试它是否有效),如果无效则向用户显示此消息:
https://i.stack.imgur.com/l4NgF.png
它不是特别用户友好,但让用户关闭这个烦人的设置似乎是让他们正确运行内部 HTML 5 Web 应用程序的唯一方法。
或者让用户使用 Chrome。 ;-)
http://www.HTML-5.com/index.html 的站点确实具有 X-UA-Compatible 元标记,但仍会进入兼容性视图,如地址栏中的“破损页面”图标所示。如何获得强制 IE 9(最终版本 9.0.8112.16421)以标准模式呈现页面的菜单选项?我尝试右键单击该撕裂的页面图标以及“Alt”键技巧以显示 Rene Geuze 提到的其他菜单选项,但这些都不起作用。
application/xhtml+xml
提供服务,因此使用 XML 解析规则; XML 不支持条件注释。无论如何,这没有任何意义;浏览器必须选择一种模式在它可以决定解释哪些条件注释。
顺便说一句,在更现代的网站上,如果您根据样板文件在 html 标记上使用条件语句,这将由于某种原因导致 ie9 默认为兼容模式。此处的解决方法是将条件语句从 html 标记中移出,并将它们添加到 body 标记中,即从 head 部分中移出。这样,您仍然可以在样式表中使用这些类来定位较旧的浏览器。
在我看来很好:
https://i.stack.imgur.com/YZmkO.png
你确定你没有设置全局或其他什么?这是 Windows 7 上测试版的全新安装。开发人员工具报告该页面默认为 IE9 标准模式。
我最近不得不解决这个问题,这就是我所做的:
首先,这个解决方案是围绕调整 Apache 服务器。
第二个主要想法是 IE9 中有一个错误,这意味着元标记不起作用,而不是这个解决方案试试这个
找到/打开你的 httpd.conf
取消注释/或添加以下行 LoadModule headers_module modules/mod_headers.so
添加以下行
保存/重新启动您的 Apache 服务器,
使用 IE9 浏览到您的页面,使用诸如 wireshark 或 fiddler 之类的工具或使用 IE 开发人员工具检查标题是否存在
<meta>
标记需要位于已处理 HTML 文件的前 512 个字节内。我说“已处理”是因为您可以在那里拥有各种 PHP,但呈现的代码才是最重要的。我已经将关于<meta>
的所有评论放在<meta>
标记下方,这样我就不会违反要求。