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

问题描述 投票:73回答:6

我正在编写一个在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>
internet-explorer internet-explorer-8 internet-explorer-7 quirks-mode x-ua-compatible
6个回答
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>

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

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


33
投票

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

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

它应该做。


11
投票
  1. 在页面开头使用html5 doctype。 <!DOCTYPE html>
  2. 强制IE使用最新的渲染模式 <meta http-equiv="X-UA-Compatible" content="IE=edge">
  3. 如果您的目标浏览器是ie8,请检查IE8中的兼容设置

I blog this in details


10
投票

添加正确的doctype声明并避免使用XML序言应足以避免使用quirks mode


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>

2
投票

HTML5 Doctype可能会导致您使用这些旧浏览器时遇到问题。它也可以归结为与HTML5 shiv相关的时髦。

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

当这些IE切换到怪癖模式时,你的设计是否破裂?如果它是你的CSS导致显示奇怪的东西,它可能值得在CSS上工作,所以即使浏览器切换模式,网站看起来也一样。

© www.soinside.com 2019 - 2024. All rights reserved.