当前位置: 代码迷 >> Web前端 >> dtd与浏览器基准模式
  详细解决方案

dtd与浏览器基准模式

热度:294   发布时间:2012-08-31 12:55:03.0
dtd与浏览器标准模式

?

在本栏目文章中,涉及到的浏览器有以下几种:

IE6 IE7 IE8 Firefox Chrome Safari Opera

由于和系统的紧密集成,我们把 IE 系列目前较为常见的 IE6 IE7 IE8 当作三种浏览器来看待,并会在具体问题中分别针对这几个版本做分析。

浏览器的版本

在上述浏览器中,除 IE 系列外,文章中提到的浏览器版本在文章末尾的“测试环境”中做了注明。一般来说都是在编写某一篇文章时,各浏览器的最新版本。

在分析某些问题时,不保证能在上述所有浏览器中都进行了测试。因此具体测试的浏览器应以各文章末尾的“测试环境”中出现的浏览器为准。

浏览器的工作模式

各浏览器的工作模式列表

在上述浏览器中,每种浏览器都有两或三种工作模式1,总结如下:

IE6 IE7 IE8 Firefox Chrome Safari Opera
混杂模式(Quriks Mode)
接近标准模式(Almost Standards Mode)
标准模式(Standards Mode)

注:

  1. 关于浏览器工作模式的详细信息,请参考 KB001: 兼容性问题与浏览器的内核及渲染模式 中的内容。

对“标准模式”的定义

注意以上“各浏览器的工作模式列表”中,IE6 和 IE7 有“标准模式”,却没有“接近标准模式”。

IE6 和 IE7 的“标准模式”在它们推出的年代是很接近当时的标准的,虽然时过境迁,在现在看来它们已经不够“标准”,但我们仍把 IE6 和 IE7 当年的、现在看起来并不足够接近标准的“标准模式”仍然称做 IE6 和 IE7 的 “标准模式”。

在这里提到的“模式”是一个与时间点相关联的概念,我们不会因为时间点的不同而更改他们的名称1。也就是说,这个“标准模式”是与浏览器的品牌和版本密切相关的,即便是各浏览器最新版本的 “标准模式” 也会有差别。

注:

  1. 有些文章会把IE6的“标准模式”称作“接近标准模式”,这种划分方式过于主观,如果由于早些时候的“标准模式”不再接近现有的标准,而将他们改称为“接近标准模式”的话,那么再过一段时间,他们就会变成“接近混杂模式”了。

浏览器的名称及工作模式的缩写

在本栏目文章中,经常会分组罗列各浏览器及各种模式,为了便于阅读和区分,我们使用了缩写的方式来表达。

具体规则如下:

  • 要描述某浏览器的某种工作模式时,以 浏览器名称(工作模式) 的形式来表示。如:
    缩写 含义
    第一组 IE6(S) IE6 的“标准模式”
    第二组 IE6(Q) IE6 的“混杂模式”
  • 要描述多个浏览器及工作模式的组合时,使用 空格 来分隔。如:
    缩写 含义
    第一组 IE6(S) IE7(S) IE6 和 IE7 的“标准模式”
    第二组 IE6(Q) IE7(Q) IE6 和 IE7 的“混杂模式”
  • 描述相同版本的 IE8、Firefox、Chrome、Safari 和 Opera 的“标准模式”和“接近标准模式”时,由于各浏览器相同版本的“标准模式”和“接近标准模式”之间的差异极少,因此除必须要区分这两种模式的情况外,都使用 浏览器名称(S) 来表示该浏览器的“标准模式”及“接近标准模式”。如:
    缩写 含义
    第一组 IE8(S) Firefox(S) IE8 和 Firefox 的“标准模式”和“接近标准模式”
    第二组 Chrome(S) Safari(S) Chrome 和 Safari 的“标准模式”和“接近标准模式”
  • 描述时必须要区分上述浏览器的“标准模式”和“接近标准模式”时,使用 浏览器名称(A) 来表示该浏览器的“接近标准模式”。如:
    缩写 含义
    第一组 IE8(S) IE8 的“标准模式”
    第二组 IE6(S) IE7(S) IE8(A) IE6 和 IE7 的“标准模式”以及 IE8 的“接近标准模式”
  • 要描述某一浏览器,并且不区分其工作模式时,仅以 浏览器名称 表示,如:
    缩写 含义
    第一组 IE6 IE7 IE6 和 IE7 的“标准模式”和“混杂模式”
    第二组 IE8 Firefox IE8 和 Firefox 的“标准模式”、“接近标准模式”和“混杂模式”
  • 当描述过一个或一个以上的浏览器及模式的分组后,以 其他浏览器 来代表上述分组中未出现的、文章末尾的“测试环境”中列出的剩余的浏览器及模式,如“测试环境”中列出的浏览器有 IE6、IE7、IE8、Firefox、Chrome、Safari,则:
    缩写 含义
    第一组 IE6 IE7 IE8(Q) IE6 和 IE7 的“标准模式”和“混杂模式”以及 IE8 的“混杂模式”
    第二组 其他浏览器 IE8 的“标准模式”和“接近标准模式”以及 Firefox、Chrome、Safari 的“标准模式”、“接近标准模式”和“混杂模式”
  • 要描述 IE 系列的浏览器,不区分版本及工作模式时,仅以 IE 表示,如:
    缩写 含义
    第一组 IE IE6 和 IE7 的“标准模式”和“混杂模式”以及 IE8 的“标准模式”、“接近标准模式”和“混杂模式”
    第二组 其他浏览器 除 IE6、IE7 和 IE8 以外在“测试环境”中列出的剩余的浏览器的“标准模式”、“接近标准模式”和“混杂模式”




注意:
1,IE8,IE9的Almost Standards Mode模式是不能通过开发工具条切换的,而各版本的Standards Mode和Quriks Mode是切换的(来自MSDN)
2,IE5.5浏览器的盒状模型尺寸错误问题只在IE5.5和IE6以上版本的Quriks Mode存在。
3,IE8浏览模式说明:http://blogs.msdn.com/b/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx
4,FireFox浏览模式说明:https://developer.mozilla.org/en/Mozilla%27s_DOCTYPE_sniffing

5,IE6,IE7自称的标准模式只相当于其它浏览器的近似标准模式,对于Strict DTD和Transitional DTD都是如此,所以只有近似标准模式是所有浏览器都支持的,如图

DTD

IE6,IE7

IE8+,Firefox,Chrome

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Stardards(相当于Almost)

Almost Stardards

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Stardards(相当于Almost)

Stardards


更多DTD与浏览器模式表格请参考:http://hsivonen.iki.fi/doctype/?下面的表格

6,在没有或错误的DTD和UA兼容设置的情况下所有浏览器都是Quirks模式
  相关解决方案