首页 文章

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

提问于
浏览
197

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

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

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

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

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

8 回答

  • 1

    适用于我在IE9 documentMode中工作 .

    如果没有 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版本在使用中 .

  • 22

    我放

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

    之后的第一件事

    <head>
    

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

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

  • 33

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

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

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

  • 0

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

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

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

    enter image description here

    (叹 . )

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

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

    我不情愿的解决方案是测试浏览器是否支持HTML 5(通过创建画布,并测试它是否's valid), and displaying this message to the user if it'无效:

    enter image description here

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

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

  • 0

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

  • 6

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

  • 1

    看起来很好我:

    alt text

    你确定你没有在全球范围内进行设置吗?这是一个在Windows 7上干净安装测试版 . 开发人员工具报告该页面默认为IE9标准模式 .

  • 262

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

    首先,这个解决方案是围绕调整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开发人员工具检查 Headers 是否存在

相关问题