怪癖模式
在 Web 的早期,页面通常以两种版本编写:一种用于 Netscape Navigator,另一种用于 Microsoft Internet Explorer。当 W3C 制定 Web 标准时,浏览器不能立即开始使用它们,因为这样做会破坏 Web 上的大多数现有网站。因此,浏览器引入了两种模式来区分新的符合标准的网站和旧的传统网站。
现在,Web 浏览器中的布局引擎使用三种模式:怪癖模式、有限怪癖模式和无怪癖模式。在 **怪癖模式** 中,布局模拟 Navigator 4 和 Internet Explorer 5 中的行为。这对于支持在 Web 标准广泛采用之前构建的网站至关重要。在 **无怪癖模式** 中,行为是 (希望) 现代 HTML 和 CSS 规范中描述的所需行为。在 **有限怪癖模式** 中,只实现极少数的怪癖。
有限怪癖模式和无怪癖模式过去分别被称为“几乎标准”模式和“完全标准”模式。这些名称已更改,因为行为现在已标准化。
浏览器如何确定使用哪种模式?
对于 HTML 文档,浏览器使用文档开头的 DOCTYPE 来决定是将其以怪癖模式还是标准模式处理。为了确保您的页面使用完全标准模式,请确保您的页面具有类似于以下示例中的 DOCTYPE
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Hello World!</title>
</head>
<body></body>
</html>
示例中显示的 DOCTYPE,<!DOCTYPE html>
,是最简单的,也是当前 HTML 标准推荐的。HTML 标准的早期版本推荐了其他变体,但所有现有的浏览器今天都会对该 DOCTYPE 使用完全标准模式。没有使用更复杂 DOCTYPE 的合理理由。如果您确实使用其他 DOCTYPE,您可能会冒使用触发几乎标准模式或怪癖模式的 DOCTYPE 的风险。
将 DOCTYPE 放在 HTML 文档的开头,在任何其他内容之前。
<!DOCTYPE html>
的唯一目的是激活无怪癖模式。HTML 标准 DOCTYPE 的旧版本提供了额外的含义,但没有浏览器曾经将 DOCTYPE 用于除了切换渲染模式之外的任何其他目的。
另请参阅对 不同浏览器选择各种模式的时间 的详细描述。
XHTML
如果您使用 Content-Type
HTTP 标头中的 application/xhtml+xml
MIME 类型将页面作为 XHTML 提供,则不需要 DOCTYPE 来启用标准模式,因为此类文档始终使用“完全标准模式”。
如果您使用 text/html
MIME 类型提供类似 XHTML 的内容,浏览器将将其读取为 HTML,您将需要 DOCTYPE 来使用标准模式。
如何查看使用了哪种模式?
如果页面以怪癖模式或有限怪癖模式呈现,Firefox 将在开发者工具的控制台选项卡中记录一条警告。如果没有显示此警告,则 Firefox 正在使用无怪癖模式。
JavaScript 中 document.compatMode
的值将显示文档是否处于怪癖模式。如果其值为 "BackCompat"
,则文档处于怪癖模式。如果不是,则其值为 "CSS1Compat"
。