怪癖模式
在 Web 的早期,頁面通常以兩種版本編寫:一種用於 Netscape Navigator,另一種用於 Microsoft Internet Explorer。當 W3C 制定 Web 標準時,瀏覽器不能立即開始使用它們,因為這樣做會破壞 Web 上的大多數現有網站。因此,瀏覽器引入了兩種模式來區分新的符合標準的網站和舊的傳統網站。
現在,Web 瀏覽器中的佈局引擎使用三種模式:怪癖模式、有限怪癖模式和無怪癖模式。在 **怪癖模式** 中,佈局模擬 Navigator 4 和 Internet Explorer 5 中的行為。這對於支援在 Web 標準廣泛採用之前構建的網站至關重要。在 **無怪癖模式** 中,行為是 (希望) 現代 HTML 和 CSS 規範中描述的所需行為。在 **有限怪癖模式** 中,只實現極少數的怪癖。
有限怪癖模式和無怪癖模式過去分別被稱為“幾乎標準”模式和“完全標準”模式。這些名稱已更改,因為行為現在已標準化。
瀏覽器如何確定使用哪種模式?
對於 HTML 文件,瀏覽器使用文件開頭的 DOCTYPE 來決定是將其以怪癖模式還是標準模式處理。為了確保您的頁面使用完全標準模式,請確保您的頁面具有類似於以下示例中的 DOCTYPE
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Hello World!</title>
</head>
<body></body>
</html>
示例中顯示的 DOCTYPE,<!DOCTYPE html>,是最簡單的,也是當前 HTML 標準推薦的。HTML 標準的早期版本推薦了其他變體,但所有現有的瀏覽器今天都會對該 DOCTYPE 使用完全標準模式。沒有使用更復雜 DOCTYPE 的合理理由。如果您確實使用其他 DOCTYPE,您可能會冒使用觸發幾乎標準模式或怪癖模式的 DOCTYPE 的風險。
將 DOCTYPE 放在 HTML 文件的開頭,在任何其他內容之前。
<!DOCTYPE html> 的唯一目的是啟用無怪癖模式。HTML 標準 DOCTYPE 的舊版本提供了額外的含義,但沒有瀏覽器曾經將 DOCTYPE 用於除了切換渲染模式之外的任何其他目的。
另請參閱對 不同瀏覽器選擇各種模式的時間 的詳細描述。
XHTML
如果您使用 Content-Type HTTP 標頭中的 application/xhtml+xml MIME 型別將頁面作為 XHTML 提供,則不需要 DOCTYPE 來啟用標準模式,因為此類文件始終使用“完全標準模式”。
如果您使用 text/html MIME 型別提供類似 XHTML 的內容,瀏覽器將將其讀取為 HTML,您將需要 DOCTYPE 來使用標準模式。
如何檢視使用了哪種模式?
如果頁面以怪癖模式或有限怪癖模式呈現,Firefox 將在開發者工具的控制檯選項卡中記錄一條警告。如果沒有顯示此警告,則 Firefox 正在使用無怪癖模式。
JavaScript 中 document.compatMode 的值將顯示文件是否處於怪癖模式。如果其值為 "BackCompat",則文件處於怪癖模式。如果不是,則其值為 "CSS1Compat"。