74

我正在编写一个在 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>
4

6 回答 6

87

这是绝对确定的方法:

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

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

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

于 2012-11-22T20:13:38.253 回答
33

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

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

它应该这样做。

于 2011-03-21T05:22:49.780 回答
11
  1. Using html5 doctype at the beginning of the page.

    <!DOCTYPE html>

  2. Force IE to use the latest render mode

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

  3. If your target browser is ie8, then check your compatible settings in IE8

I blog this in details

于 2012-09-14T09:13:13.110 回答
10

添加正确的文档类型声明并避免 XML 序言应该足以避免怪癖模式

于 2011-03-21T05:27:42.217 回答
9

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

最好的方法是使用 http 标头

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

标题:

name: X-UA-Compatible  
value: IE=edge

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

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
于 2013-06-23T07:48:31.563 回答
2

HTML5 Doctype 可能会导致您在使用这些旧浏览器时出现问题。它也可能归结为与 HTML5 shiv 相关的一些时髦的东西。

您可以尝试切换到其中一种 XHTML 文档类型并相应地更改您的标记,至少暂时如此。这可能使您可以缩小问题的范围。

当这些 IE 切换到 quirks 模式时,您的设计是否会中断?如果是您的 CSS 导致显示异常,则可能值得对 CSS 进行处理,以便即使在浏览器切换模式时站点看起来也一样。

于 2011-03-22T18:18:19.137 回答