IE9不断使用IE7标准文档模式,无论我尝试什么

Ala*_*tis 21 html html5 internet-explorer-9

这让我疯了.

无论我尝试什么,Internet Explorer都会切换到IE7标准文档模式.我尝试使用HTML5 boilet plate和HTML5 reset(他们自己的站点进入Quirks模式)尝试剥离我的代码以使其无法尝试并使其表现出来.

我还添加了元标记,无论如何都应该强制IE使用它的最新版本,但是根据W3C,所做的一切都使得我的标记无效.

这就是我的意思; 我错过了什么?

<!doctype html>

<!--[if IE 7 ]> <html class="ie7> <![endif]-->
<!--[if IE 8 ]> <html class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <p>Test text</p>        
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑

我通过以下建议找到了解决方案.这个建议不起作用,但确实引起了我的回答.这可能不是100%适合每个人,因为它在body标签上强加了一个类而不是html,但它适用于我,似乎适用于IE.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Ano*_*oop 10

这个线程

X-UA兼容的元标记必须在元素中的标题后直接出现.没有其他元标记,css链接和js脚本调用可以放在它之前.

  • 我尝试了你的建议,不幸的是它没有任何区别.但是,它确实引出了我的答案.我正在使用条件注释在我的`html`标签上强加一个类,所以我可以调整我的CSS用于旧版本的IE.事实证明条件注释不能在`head`之前使用,所以我只是将条件注释移动到body标签.它工作正常,我仍然可以自定义我的CSS.谢谢. (2认同)

Ala*_*tis 10

我通过之前的建议找到了解决方案.这个建议不起作用,但确实引起了我的回答.这可能不是100%适合每个人,因为它在body标签上强加了一个类而不是html,但它适用于我,似乎适用于IE.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑

我实际上已经停止使用上面的内容,现在将我的IE特定类添加到html元素中,如HTML5BP中所建议的那样.

另请注意,您可能希望chrome=1从元标记中移除Chrome框架即将被终止.尽管对于那些仍在使用它的罕见情况,保持它没有害处.

另外还有一个我没想到的东西是IE中可能是最令人恼火的设置的状态 - "在兼容性视图中显示内部网站点".如果您运行一个名为http://mytestserver:8888IE 的测试服务器,那么无论您在文档头中执行什么操作,都会认为它是一个Intranet站点并切换模式.

我的公司的组策略启用了此设置,因为我们的古老sharepoint内部网实际上依赖于它.非常适合旧的垃圾,但对于实际上会遵守标准的新东西来说很糟糕.

Tools > Compatibility View Settings如果您有任何遗留站点,请将其关闭并准备好手动切换到它.


st3*_*inn 8

有时,IE在Intranet站点上的表现非常糟糕,无论<meta>头部中的线路如何,都会强制它们进入兼容模式.但是,您可以通过将以下内容添加到Web配置,使服务器向暴力IE发送标头以表现:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)