书格前端

浏览器中的怪异模式和标准模式


浏览器中的怪异模式和标准模式

在Web的早期,页面是有两个版本: 一个是为Netscape Navigator而写,另一个是为微软IE。

当W3C制定Web标准时,浏览器并不能立即开始使用它们,因为这样做会破坏许多已经存在的网站。因此浏览器引入了两个模式来对待新标准兼容的站点和遗留下来旧的站点。

目前在浏览器上有三种用于布局引擎的模式:怪异模式(quirks mode)、近标准模式(almost stardards mode)和完全标准模式(full standards mode)。

在怪异模式下,布局模拟Navigator 4和IE5的非标准行为。

这对于支持在Web标准被广泛接受之前创建的站点是必须的。在完全标准模式中,行为是按照HTML和CSS规范中描述的。在近标准模式中,只有一小部分的怪异实现。

浏览器怎么判断使用哪个模式?

对于HTML文档,浏览器使用一个在文档开头的DOCTYPE来决定使用怪异模式还是标准模式。 为了确保你的页面使用完全标准模式,请保证你的页面使用以下示例的代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset=UTF-8>
    <title>Hello World!</title>
  </head>
  <body>
  </body>
</html>

如示例中DOCTYPE所示,, 是尽可能的简单,并且是HTML5推荐形式之一。 早期的HTML标准推荐其他的变种,但是所有存在的浏览器今天都将会为DOCTYP使用完全标准模式,即使是过期的IE6。

没有什么有效的理由使用一个更复杂的DOCTYPE。如果你使用其他的DOCTYPE,你可以会有风险选中一个触发近标准模式或者怪异模式。

保证你将DOCTYPE放在HTML文档开头的正确位置。任何在DOCTYPE之前,像一个注释或者XML声明都将使IE9及之前的浏览器触发怪异模式。

在HTML5中,使用DOCTYPE的唯一目的就是激活完全标准模式。旧版本的HTML标准给予DOCTYPE额外的含义,但是没有浏览器曾经使用DOCTYPE用于除切换怪异模式和标准模式之外的任何事情。

查看另外一个详细描述不同的浏览器什么时候选择各种模式

XHTML

如果你使用XHTML来为你的页面提供服务,并在HTTP的头部Content-Type中使用 application/xhtml+xml的MIME类型,你不需要DOCTYPE来启用标准模式,这样的文档总是使用完全 标准模式。注意即使通过application/xhtml+xml提供页面服务,在IE8中会提供一个下载对话框, 而不是现实你的页面,因为对IE9之前的浏览器而言这是一种未知的格式。

如果你使用text/html的MIME类型来服务XHTML类似的内容,浏览器将会识别为HTML,因此你需要使用DOCTYPE来启用标准模式。

如何查看使用的模式?

在火狐中,通过邮件菜单查看页面信息,并查找渲染模式。

在IE中,按F12,查找文档模式。

不同模式之间的区别?

查看怪异列表近标准模式 之间的区别。

参考

原文

【全文完】