DOCTYPE 切換運作的方式

若有完整 URI 的 XHTML DOCTYPE,則切到標準模式,用 W3C 規則來讀網頁裡的 CSS 與 XHTML。 若有不完整或過時的 DOCTYPE 或沒有 DOCTYPE,就切成相容模式, 用傳統方法來處理網頁。 完整的長得像這樣,會讓瀏覽器切到標準模式:

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> 這是 XHTML 1.0 Strict DOCTYPE,還有 Transitional 跟 Frameset DOCTYPE。

不完整的像這樣,會切到相容模式:

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.0 Strict//EN” “/DTD/xhtml1-strict.dtd”> 兩者差異只在於前者用絕對路徑,後者用相對路徑。 當然,這是個正確的網址,你可以連去下載到該份 DTD,可是瀏覽器看到它時,不會真的去下載這 DTD,它只是用來判斷要切換成哪種模式罷了。 (另,IE 並不守規矩,網頁中只要出現 XHTML DOCTYPE,不論是否是完整網址,IE 都會切成標準模式。 但為了其他瀏覽器,建議還是用完整路徑) (但,就算有完整路徑,只要網頁開頭有

這東東,稱為 XML Prolog,IE6就會切成相容模式 =.=)

以下列出各 DTD。

XHTML 1.0 Strict 可讓所有支援 DOCTYPE 的瀏覽器切成標準模式, 但是對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> XHTML 1.0 Transitional 讓 IE6+/Win 及 IE5+/Mac 切成標準模式。 使第一代 Gecko 瀏覽器(Mozilla 1.0,Netscape 6)切成標準模式。 使第二代 Gecko 瀏覽器(Mozilla 1.01,Netscape7+,Chimera 0.6+)切成 近乎標準模式。 對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.0 Transtitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> XHTML 1.0 Frameset 讓 IE6+/Win 及 IE5+/Mac 切成標準模式。 使第一代 Gecko 瀏覽器(Mozilla 1.0,Netscape 6)切成標準模式。 使第二代 Gecko 瀏覽器(Mozilla 1.01,Netscape7+,Chimera 0.6+)切成 近乎標準模式。 對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”> XHTML 1.1 此規格等同於 Strict,可讓所有支援 DOCTYPE 的瀏覽器切成標準模式, 但是對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。

<!DOCTYPE html PUBLIC “-/W3C//DTD XHTML 1.1EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd”> HTML 4.01 Strict 會讓 IE 切成標準模式,新版的 Gecko 切成近乎標準模式。

<!DOCTYPE html PUBLIC “-/W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”> 但若用完整的 HTML 4.0 DOCTYPE,卻會使 IE 跟 Gecko 切成相容模式!

所以講了這麼多,目前的最佳解就是採用 XHTML (Transitional)。


--EOF--

Published

11 January 2010

Tags