選擇doctype
text/html
下面是創(chuàng)建新的text/html文檔時如何選擇doctype的簡單指南:
- 標準模式,最前沿的驗證
<!DOCTYPE html>
- 如果想驗證諸如
<video> 、<canvas> 和ARIA這樣的新特性,那么這樣做是對的。注意,HTML5的有效定義依舊在變化中,請確保在Firefox、Safari、Chrome、Opera9或Opera10中測試圖像對齊。在Internet Explorer中測試圖像對齊是不足夠的,無論如何請確保在IE8中也進行了測試。
- 標準模式,更穩(wěn)定的驗證目標
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- 這個doctype也會觸發(fā)標準模式,且10歲大的HTML4.01有效定義是穩(wěn)定的。請確保在Firefox、Safari、Chrome、 Opera9或Opera10中測試圖像對齊。在Internet Explorer中測試圖像對齊是不足夠的,無論如何請確保在IE8中也進行了測試。
- 要使用標準模式,但仍要驗證不推薦標記或在表格布局中使用切片圖像且不想去修復它們。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- 它會觸發(fā)幾乎標準模式(和老掉牙的Mozilla中的完全標準模式full Standards mode)。請注意,如果以后移植到HTML5上,基于利用表格實現(xiàn)的切片圖像的布局可能會被破壞(且完整標準模式也如此)。
- 故意要使用怪癖模式
- 沒有doctype。
- 請別這樣做。故意為怪癖模式所做的設計將會困擾你,在將來你的同事或繼任者甚至沒有人關心Windows IE6(Netscape4.x和IE5已經(jīng)沒有人關心了)。為怪癖模式設計是個壞主意。相信我。
- 如果你想依舊支持Windows IE6,對它做一個特別的hack使用條件注釋比使其他瀏覽器退步到怪癖模式好。
我不推薦任何的XHTML doctype,因為XHTML被用作text/html被認為是有害的。無論如何,如果你選擇使用XHTML doctype,請注意XML聲明會使IE6(但不是IE7!)觸發(fā)怪癖模式。
application/xhtml+xml
對application/xhtml+xml的簡單指南是絕不使用doctype。該方式下的網(wǎng)頁不是“嚴格一致”的XHMTL1.0,但這并不重要。(請看后面的附錄)
IE8 并發(fā)癥
A List Apart 曾介紹 ,IE8除doctype外會使用基于meta元素的模式轉換作為模式選擇的因素之一。(請看Ian Hickson、David Baron、David Baron again、Robert O’Callahan 和 Maciej Stachowiak的評論。)
IE8有4種模式:IE5.5怪癖模式、IE7標準模式、IE8 幾乎標準模式 和IE8標準模式。模式的選擇取決于來自幾個方面的數(shù)據(jù):doctype、meta元素、HTTP頭、來自微軟的定期下載數(shù)據(jù)、局域網(wǎng)域、用戶所做設置、局域網(wǎng)管理員所做設置、父框架的模式(如果有)和地址欄兼容視圖按鈕被用戶觸發(fā)。(對于嵌入該引擎的其他應用,模式也取決于嵌入的應用。)
幸運的是如果出現(xiàn)下列情況,IE8大體上會像其他瀏覽器一樣使用doctype嗅探:
- 作者沒有設置X-UA-Compatible HTTP頭
- 作者沒有設置X-UA-Compatible meta標簽
- 微軟沒有在黑名單中放置該站點的域名
- 局域網(wǎng)管理員沒有把該站點放置到黑名單上
- 用戶沒有按下兼容視圖按鈕(Compatibility View button) (或以其他方式添加到某個特定的用戶黑名單中)
- 該站點不在局域網(wǎng)域中
- 用戶沒有選擇在IE7中顯示所有站點
- 頁面沒有通過frame嵌入到兼容模式的頁面中
上述除兩個關于X-UA-Compatible的情況外,IE8像IE7一樣執(zhí)行doctype嗅探。IE7仿真( IE7 emulation)叫兼容視圖。
在 X-UA-Compatible 情況下,IE8的行為和其他瀏覽器完全不同。想看本頁的附錄或PDF和PNG格式的流程圖。
不幸的是,沒有 X-UA-Compatible的HTTP頭或meta標簽,即使使用了合適的doctype,IE8讓用戶無意間使頁面從IE8的標準模式降到IE7模式,這是一種仿真的IE7標準模式。更糟糕的是,局域網(wǎng)管理員也可以這么做。微軟也可以把你所用的所有域名到列入黑名單。
為了對付這些影響,doctype是不夠的,你需要X-UA-Compatible HTTP頭和meta標簽。
下面的簡單指南是針對已經(jīng)有doctype在其他瀏覽器觸發(fā)標準模式或者幾乎標準模式的新的text/html文檔如何選擇X-UA-Compatible HTTP頭或meta標簽的:
- 你的域名沒有在微軟的黑名單上,你更關注是沒有瀏覽器專屬的令人討厭的東西而不是確保用戶無法回退去呈現(xiàn)IE7的行為。
- 你不需要包括X-UA-Compatible HTTP頭或meta標簽。
- 你的域名在微軟的黑名單中,由于你域名中的其他作者破壞了站點或許導致用戶對整個域啟用了兼容視圖,你擔心Google或Digg用frame嵌入你的站點或你想確保用戶無法使用兼容視圖
- 首先,在你的頁面包含后面的meta元素(它在HTML5中是非法的)
<meta http-equiv="X-UA-Compatible" content="IE=Edge"> (在任何腳本元素前),或者設置后面的HTTP頭:X-UA-Compatible: IE=Edge
- 你的站點在IE7中工作但在IE8中破壞
- 首先,在你的頁面包含后面的meta元素(它在HTML5中是非法的)
(在任何腳本元素前),或者設置后面的HTTP頭: X-UA-Compatible: IE=EmulateIE7,然后修復你的站點不依賴非標準的IE7行為和遷移到IE=Edge。
出處:隨網(wǎng)之舞
責任編輯:bluehearts
上一頁 用doctype激活瀏覽器模式 [2] 下一頁 用doctype激活瀏覽器模式 [4]
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|