为啥我会在 IE8 中触发怪癖模式?

Posted

技术标签:

【中文标题】为啥我会在 IE8 中触发怪癖模式?【英文标题】:why am I triggering quirks mode in IE8?为什么我会在 IE8 中触发怪癖模式? 【发布时间】:2010-12-11 18:54:02 【问题描述】:

我正在处理一个页面,当我加载到 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 窗口并重新加载? 这解决了我的怪癖模式问题:***.com/questions/6294301/… 【参考方案1】:

IE 是否决定在服务器级别使用哪种模式

一般不会,不会。 compatibility view list 的丑陋之处在于它是特定于站点的,但这只会让你回到 IE7 风格的标准模式,而不是 IE5.5 风格的怪癖模式。

您的代码看起来没问题,只要 DOCTYPE 是页面上的第一件事。如果文档类型之前有注释、PI、XML 声明(IE8 之前)或任何非空白文本内容,IE 将被强制为document.compatMode= 'BackCompat'。如果您在文本编辑器中看不到的控制字符偷偷进入,那可以做到。

示例问题页面?

【讨论】:

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

以上是关于为啥我会在 IE8 中触发怪癖模式?的主要内容,如果未能解决你的问题,请参考以下文章

IE 8 渲染怪癖模式

为啥我在引导模式中的点击事件触发不止一个

在 MSHTML IE8 中修改 DOM 时是不是会触发事件?

在ie9下在textbox框里面输入内容按enter键会触发按钮的事件

为啥我的简单提取会触发 CORS 错误?

即使触发了 hasLayout,CSS 不透明度也无法在 IE7 或 IE8 中工作