即使设置了DOCTYPE,页面也会在IE8上继续进入Quirks模式

时间:2013-12-06 01:58:05

标签: html css internet-explorer-8 quirks-mode ie8-browser-mode

我正在尝试在IE8中加载我的网站,它不断恢复到Quirks模式并显示所有有趣的页面。我可以通过开发人员工具将其切换到IE8文档模式,这很好,但是没有回答为什么它会一直恢复到Quirks模式。

我已设置<!DOCTYPE html>所以它不应该这样做。页面顶部包含此内容,由CMS生成:

(ignore this line, it's here to show the blank lines in the source code)




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--[if IE 7]>                  <html class="ie7 no-js" lang="en">     <![endif]-->
<!--[if lte IE 8]>              <html class="ie8 no-js" lang="en">     <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="not-ie no-js" lang="en">  <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

根据w3c validator,您在doctype之前有空格。这足以让IE进入怪癖模式。

  

在未首先看到doctype的情况下找到非空格字符。预期。

请参阅this for a possible solution

答案 1 :(得分:1)

我相信IE默认使用Quirks,除非你强迫它使用标准。我用它来强制IE中的标准......

<!DOCTYPE html> 

doctype必须完全如上所述才能强制执行标准(到目前为止一直很好)。

<html>
<head>

下一行必须是head标记中的 first ,否则会被忽略。

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

第一行强制理解“边缘”的IE版本的标准 - 无论什么版本,任何高于9的版本都应该理解这一行指示它显示标准。

由于IE9不理解“edge”,第二行强制IE9以标准显示。

由于IE8不理解content =“IE = 9”,它会跳过这个并继续前进到它确实理解的下一行,并强制它在标准中显示。

我在doctype之上用空格和硬回车测试了所有这些,即使有空格和返回它们也能正常工作。

我认为你可以在IE7的IE8声明下面发表另一个声明,但我不想发誓。