为什么我的IE8会触发怪异模式?

11
我正在开发一个页面,当我在IE8中加载并查看开发者工具时,它告诉我该页面的默认模式是怪异模式。
我使用了严格的DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

我甚至在代码中加入了明确的标准开关,尽管我并不认为我需要它:

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

我不明白为什么页面默认不是IE8标准模式?

我能想到的唯一解释是,要访问此页面,我必须先登录到一个应用程序,并且必须遍历旧的怪异模式页面。 IE决定使用哪种模式是在服务器级别上决定的吗,还是应该逐页决定?

谢谢!


你可以尝试关闭所有IE8窗口,然后重新加载吗? - Jason
这解决了我的怪异模式问题:https://dev59.com/CVjUa4cB1Zd3GeqPNxS0 - rtpHarry
1个回答

22
IE是否在服务器级别上决定使用哪种模式? 一般来说,不是的。有一个兼容性视图列表的丑陋存在,但那只会将您带回到IE7样式的标准模式,而不是IE5.5样式的怪癖模式。 你的代码看起来还不错,只要DOCTYPE是页面上的第一件事。如果在doctype之前有注释、PI、XML声明(在IE8之前)或任何非空格文本内容,IE将被强制设置为document.compatMode= 'BackCompat'。如果有一个你在文本编辑器中看不到的控制字符混入了进去,那可能就是原因。 有例子的问题页面吗?

3
明白了!问题在于 doctype 声明不是页面上的第一件事情。谢谢! - Tim Sheiner
在我的情况下,我有一些会话和一些头重定向,但如果你在此之后回显代码,它将起作用:echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';。您可以使用任何其他的 doctype - Patrioticcow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接