我正在尝试在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">
有什么想法吗?谢谢!
答案 0 :(得分:2)
根据w3c validator,您在doctype之前有空格。这足以让IE进入怪癖模式。
在未首先看到doctype的情况下找到非空格字符。预期。
答案 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声明下面发表另一个声明,但我不想发誓。