原文: http://www.alistapart.com/articles/beyonddoctype
作者:Aaron Gustafson
译者:zhaozy in 3user.com
转载请注明作者和译者信息,谢谢!
进步总是要有代价的. 对网页浏览器来说, 由于开发者像是宣传真理一样的拍着胸部担保着一些编辑器和浏览器(特别是Internet Explorer), 用户们为此花费很多的成本. 而当这个浏览器推出了一个新版本, 然后又修正了之前版本的一些错误和对规范的误解(或是引入了新的), 或是以任何方式改变行为时. 站点突然崩溃了, 然后我们的客户, 我们的老板和用户们都感觉到非常的不开心.
我们也许可以花上一段时间来解释为什么我们的网站坏了, 但是如果他们没有被破坏那不是更好吗?一点点背景介绍
在成功的放出了更好的支持CSS的Internet Explorer 7的动力下, IE团队开始在一个崭新的渲染引擎(更好的遵照CSS 2.1规范)上开始进行IE 8的开发工作. 在他们的努力下, 浏览器已经可以相当精确地表现出 "Acid2 test" (http://webstandards.org/action/acid2/) . 这些你跟进的消息, 意味着IE将很快的支持生成内容和数据的URLs, 而且经确认, hasLayout会被永远取消. 它的表现结果会让其他通过Acid2测试的浏览器们进行投票(包括: Safari, iCab, Konqueror, and Opera. Firefox3也已经通过了Acid2测试,但是在文章编写的时候还没有放出.)
在新引擎的开发过程中, IE团队谨记IE 7放出后的反面评价. 一些web标准的狂热者甚至是一部分微软的崇拜者感觉到在"IE7中他们做得还不够 (程序缺陷的修正和CSS支持的改进上)". 但是有很大的一群开发者在感到疑惑, 因为他们的网站在IE6中表现的很完美, 但是到了IE7就完全崩溃了. web标准倡导者 Roger Johanssen 在他的博客中提出了 "页面被破坏的三大原因" (http://www.456bereastreet.com/archive/200611/three_reasons_sites_break_in_internet_explorer_7/), 这些都驱使大家去改善对标准的支持. IE开发团队发现了第四点: 文档类型转换(DOCTYPE switch), 一个启用现代CSS布局的核心技术在标志兼容性上有致命的缺陷.文档类型转换器失效了
回到1998年, Todd Fahrner 的 "came up with a toggle(http://web.archive.org/web/20030212115103/http://www.geocrawler.com/archives/list-name.mbox/123/1998/7/0/1037920/)" 方法能允许一个浏览器提供两套渲染模式: 一是给期许遵守标准的开发者的, 另一个是给其他所有人的. 这个观点精辟简单. 当用户端代理遇到对当前HTML标准的Doctype声明良好定义的文档时(也就是 HTML2 不会取消它), 创作者就会知道她在做什么, 并且用"标准"模式渲染这个页面(用W3C的盒模型元素布局). 但是在没有Doctype或者定义了不正确Doctype时, 文档会被用"Quirks" 模式渲染, 也就是说, 用windows版的IE5.X的非标准盒模型进行元素布局.