HTML是萬維網(wǎng)上發(fā)布超文本的通用語言[1]。從1982年Tim Berners-Lee簡化SGML建立HTML的原始定義到2001年發(fā)布XHTML1.1規(guī)范,HTML成為了有多個版本的國際標(biāo)準(zhǔn)[2]。各版本的規(guī)范都用一種機(jī)器可讀的語言定義,它描述了法定結(jié)構(gòu)、元素和屬性,這就是文檔類型定義(Document Type Definition),簡稱DTD。
DTD描述了文檔類型聲明(DTD declaration,簡稱doctype[3])位于HTML文檔最前面,它是聯(lián)系文檔和DTD指令。比如HTML4.01 Strict的doctype是:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
它指明了文檔使用的HTML版本,這是諸如瀏覽器之類的工具解析文檔時最需要的信息。比如W3C的驗證工具可依據(jù)它來檢查語法和指出錯誤。
早期瀏覽器對標(biāo)準(zhǔn)的錯誤實現(xiàn)、私有擴(kuò)展的大量滋生和為了向前兼容以及早期標(biāo)準(zhǔn)本身的混亂等導(dǎo)致了那時的文檔既沒有doctype也沒有對DTD的直接引用,也導(dǎo)致了新的標(biāo)準(zhǔn)難以得到應(yīng)用和普及,因為瀏覽器無法區(qū)分它們。為了處理根據(jù)Web標(biāo)準(zhǔn)創(chuàng)作的網(wǎng)頁和根據(jù)陳舊實踐創(chuàng)作的網(wǎng)頁,Todd Fahrner 在1998年提出了“came up with a toggle”方法[4]能允許瀏覽器提供兩套渲染模式: 即有完整的doctype的文檔使用W3C的標(biāo)準(zhǔn)進(jìn)行解析,否則使用舊的方式解析。
這個方法符合實際且簡單有效。兩年后,Mac版IE上首次運用,很快的其他瀏覽器制造商紛紛采用, 這就誕生了doctype嗅探(doctype sniffing或doctype switching)。瀏覽器通過它來決定其引擎應(yīng)該采用標(biāo)準(zhǔn)模式、準(zhǔn)標(biāo)準(zhǔn)模式還是怪癖模式,這將對HTML和CSS的解析、CSS布局及JavaScript腳本產(chǎn)生非常大的影響[5] 。毫無疑問,我們應(yīng)該盡可能的采用標(biāo)準(zhǔn)模式。
HTML5雖然還處于草案中,但最新瀏覽器Firefox3.5、Chrome2、Safari4和IE8已經(jīng)開始支持部分特性,特別是Google Wave的發(fā)布掀起了推進(jìn)HTML5實踐的新高潮。HTML5并不基于SGML也沒有DTD,但它為了向前兼容,接受了doctype嗅探這個事實,定義了在text/html中doctype是唯一的模式轉(zhuǎn)換聲明,除此外沒有什么用處。其doctype如此簡潔:<!doctype html>[6] 。
值得一提的是IE8為了解決向前兼容采用了X-UA-Compatible聲明[7],導(dǎo)致在IE8中瀏覽器的渲染模式不僅僅取決于doctype嗅探還取決于X-UA-Compatible聲明,這個不僅僅導(dǎo)致了模式判斷更加復(fù)雜[8],也違背了web設(shè)計的逐漸增強(qiáng)(progressive enhancement)思想[9]。
在web標(biāo)準(zhǔn)的道路上,我們不僅需要充滿現(xiàn)實主義向前兼容,更需要充滿理想主義的向后兼容,這是保證我們的web能在未來正常工作的希望。在標(biāo)準(zhǔn)、簡單和逐漸增強(qiáng)的思想下,現(xiàn)在我們頁面的最佳方案或許是:
<!doctype html> … <meta http-equiv="X-UA-Compatible" content="IE=Edge"> …
注釋: [1] HTML is the lingua franca for publishing hypertext on the World Wide Web [2] http://zh.wikipedia.org/wiki/Html [3] DTD declaration在以前規(guī)范中也常叫Document Type Declaration, 很容易和DTD混淆。 [4]http://web.archive.org/web/20030212115103/http://www.geocrawler. com/archives/list-name.mbox/123/1998/7/0/1037920/ [5] 用doctype激活瀏覽器模式 [6] http://www.w3.org/TR/html5/syntax.html#the-doctype [7] 超越文檔類型,web標(biāo)準(zhǔn)化向前兼容和IE8 [8] http://dancewithnet.com/2009/06/14/activating-browser-modes -with-doctype/#ie8modes [9] Web標(biāo)準(zhǔn)前途是否依賴瀏覽器技術(shù)
原文:http://ued.koubei.com/?p=928
本文鏈接:http://www.95time.cn/tech/web/2009/6891.asp
出處:口碑網(wǎng)UED Team
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|