1

我正在尝试在 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">

有任何想法吗?谢谢!

4

2 回答 2

2

根据w3c 验证器,您的文档类型之前有空格。这足以让 IE 进入怪癖模式。

在没有首先看到文档类型的情况下找到非空格字符。预期的 。

请参阅此以获取可能的解决方案

于 2013-12-06T01:59:36.197 回答
1

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

<!DOCTYPE html> 

doctype 必须与上面完全相同才能强制标准起作用(到目前为止一切都很好)。

<html>
<head>

下一行必须是 head 标签中的第一行,否则将被忽略。

<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 不理解“边缘”,第二行强制 IE9 在标准中显示。

由于 IE8 不理解 content="IE=9",因此它会跳过这一行并移动到它确实理解的下一行,并强制它在标准中显示。

我在文档类型上方用空格和硬回车测试了所有这些,即使有空格和回车,它们也能正常工作。

我认为您可以在 IE7 的 IE8 语句下方放置另一个语句,但我不想对此发誓。

于 2013-12-06T06:41:18.630 回答