如何强制Internet Explorer在标准模式下呈现而不是在Quirks中呈现?

maz*_*aze 73 internet-explorer quirks-mode internet-explorer-8 internet-explorer-7 x-ua-compatible

我正在编写一个在IE7标准模式和IE8标准模式下运行良好的前端.

当我启动Internet Explorer并加载页面时,IE7和IE8都直接进入Quirks模式.如何强制IE7和IE8始终在标准模式下加载页面?

到目前为止,我没有添加任何特殊的元标记.

谢谢你的协助

编辑:我的doctype和head目前看起来如下:

<!DOCTYPE html> 
<html lang="de"> 
<head> 
    <title>...</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="utf-8" />
    <script src="js/html5.js"></script> 

    (...)
</head>
Run Code Online (Sandbox Code Playgroud)

dav*_*rad 86

这是绝对肯定的方式:

<!doctype html> <!-- html5 -->
<html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on -->
<head>
<meta http-equiv="x-ua-compatible" content="IE=Edge"/> 
<!-- as the **very** first line just after head-->
..
</head>
Run Code Online (Sandbox Code Playgroud)

原因:
每当IE遇到任何冲突时,它都会回到"IE 7标准模式",忽略了x-ua-compatible.

(我知道这是一个非常古老的问题的答案,但我自己也在努力解决这个问题,并且上述方案是正确的答案.它一直有效,每次都有效)

  • @davidkonrad:那么lang info和ie-specific类在哪里呢?我的html现在看起来像这样(例如IE8):`<html class ="ie ie8 ie_old"lang ="it-IT">`抱歉,无法评论最后的答案,还没有必要的声誉.. . (3认同)

Alf*_*avo 33

可悲的是,他们希望我们使用标签让他们的浏览器知道该怎么做.看看这个文档,它告诉我们使用:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >
Run Code Online (Sandbox Code Playgroud)

它应该做.

  • 这不会超出quirks-mode或quirks-mode,但只会改变"仿真模式".IE6可以在非怪癖模式下运行(虽然这并不意味着它不是很古怪!). (3认同)

Val*_*roM 11

  1. 在页面开头使用html5 doctype.

    <!DOCTYPE html>

  2. 强制IE使用最新的渲染模式

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

  3. 如果您的目标浏览器是ie8,请检查IE8中的兼容设置

我详细介绍了这一点


saf*_*opy 10

添加正确的doctype声明并避免使用XML序言应足以避免怪异模式.


Dan*_*tle 9

我知道这个问题是在2年前提出来的,但还没有人提到这个问题.

最好的方法是使用http标头

将元标记添加到头部并不总是有效,因为IE可能在读取之前确定了模式.确保IE始终使用标准模式的最佳方法是使用自定义http标头.

标题:

name: X-UA-Compatible  
value: IE=edge
Run Code Online (Sandbox Code Playgroud)

例如,在.NET应用程序中,您可以将其放在web.config文件中.

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