原文: 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的非標準盒模型進行元素布局.