西红柿爱番茄

Feed Rss

对DOCTYPE的一点认识

12.18.2009, (X)HTML, by .

这几天看了秦歌的博客的其中一些关于XHTML和HTML,以及关于DOCTYPE的一些博文,开始关注到了DOCTYPE的一些细节的知识。促使浏览器使用XHTML1.0或者XHTML1.1还是HTML的DTD来解析文档,可是使用DOCTYPE嗅探来实现。现在浏览器的解析模式有标准模式(Standards Mode)以及所谓的怪癖模式(Quirks Mode),而标准模式的DOCTYPE的声明方式有下面的几种:

  • <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
  • <?xml version=”1.0″ encoding=”utf-8″?><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
  • <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
  • 还有一个就是目前HTML5的声明模式

设置DOCTYPE的好处就在于促使浏览器使用标准模式下去解析HTML文档,这使得浏览器之间的兼容性更好,比如IE的框模型Hack都不会存在等等,跟其他的浏览器使用同一种模式来解析。但是如果不声明DOCTYPE的话,浏览器就会使用怪癖模式去解析文档,这就使得很多兼容性的问题都会出现,特别是IE浏览器下的怪癖模式。所以应该避免不声明DOCTYPE的写法。当然,有时候为了特意的去促发浏览器使用怪癖模式去解析 ,那就另当别论了,比如Google,百度的首页就没有声明DOCTYPE。

同时还有一点问题大家需要知道的是,IE8下有一个兼容模式,就是会默认使用IE7的兼容模式去解析文档,而不是使用IE8本身。这个细节问题可以通过设置meta来实现:<meta content=”IE=8″ http-equiv=”X-UA-Compatible” />

推荐阅读:《用doctype激活浏览器模式》,《HTML和XHTML的不同》,《XHTML1.1标签列表、属性和嵌套规则》,《HTML文档中小meta的大作用》。

对DOCTYPE的一点认识 有1条回应

  1. I’ve been to this blog in the past yet this is among the best blogposts yet. keep it up!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>