怪異模式和標準模式

因爲歷史的緣由,各個瀏覽器在對頁面的渲染上存在差別,甚至同一瀏覽器在不一樣版本中,對頁面的渲染也不一樣。在W3C標準出臺之前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差別(Quirks mode或者稱爲Compatibility Mode);因爲W3C標準的推出,瀏覽器渲染頁面有了統一的標準(CSScompat或稱爲Strict mode也有叫作Standars mode),這就是兩者最簡單的區別。
W3C標準推出之後,瀏覽器都開始採納新標準,但存在一個問題就是如何保證舊的網頁還能繼續瀏覽,在標準出來之前,不少頁面都是根據舊的渲染方法編寫的,若是用的標準來渲染,將致使頁面顯示異常。爲保持瀏覽器渲染的兼容性,使之前的頁面可以正常瀏覽,瀏覽器都保留了舊的渲染方法(如:微軟的IE)。這樣瀏覽器渲染上就產生了Quircks mode和Standars mode,兩種渲染方法共存在一個瀏覽器上。
html

火狐一直工做在標準模式下,但IE(6,7,8)標準模式與怪異模式差異很大,主要體如今對盒子模型的解釋上,這個很重要,下面就重點說這個。那麼瀏覽器究竟該採用哪一種模式渲染呢?這就引出的DTD,既是網頁的頭部聲明,瀏覽器會經過識別DTD而採用相對應的渲染模式:
1. 瀏覽器要使老舊的網頁正常工做,但這部分網頁是沒有doctype聲明的,因此瀏覽器對沒有doctype聲明的網頁採用quirks mode解析。
2. 對於擁有doctype聲明的網頁,什麼瀏覽器採用何種模式解析,這裏有一張詳細列表可參考:http://hsivonen.iki.fi/doctype。
3. 對於擁有doctype聲明的網頁,這裏有幾條簡單的規則可用於判斷:對於那些瀏覽器不能識別的doctype聲明,瀏覽器採用strict mode解析。
4. 在doctype聲明中,沒有使用DTD聲明或者使用HTML4如下(不包括HTML4)的DTD聲明時,基本全部的瀏覽器都是使用quirks mode呈現,其餘的則使用strict mode解析。
5. 能夠這麼說,在現有有doctype聲明的網頁,絕大多數是採用strict mode進行解析的。
6. 在ie6中,若是在doctype聲明前有一個xml聲明(好比:<?xml version=」1.0″ encoding=」iso-8859-1″?>),則採用quirks mode解析。這條規則在ie7中已經移除了。
如何設置爲怪異模式:jquery

方法一:在頁面項部加 <!DOCTYPE HTML PUBLIC 「-//W3C//DTD HTML 4.01 Transitional//EN」>
方法二:什麼也不加。
如何設置爲標準模式:瀏覽器

加入如下任意一種:HTML4提供了三種DOCTYPE可選擇:
<!DOCTYPE HTML PUBLIC 「-//W3C//DTD HTML 4.01 Transitional//EN」 「http://www.w3.org/TR/html4/loose.dtd」>框架

<!DOCTYPE HTML PUBLIC 「-//W3C//DTD HTML 4.01//EN」 「http://www.w3.org/TR/html4/strict.dtd」>ui

<!DOCTYPE HTML PUBLIC 「-//W3C//DTD HTML 4.01 Frameset//EN」 「http://www.w3.org/TR/html4/frameset.dtd」>spa

XHTML1.0提供了三種DOCTYPE可選擇:xml

(1)過渡型(Transitional )
<!DOCTYPE html PUBLIC 「-//W3C//DTD XHTML 1.0 Transitional//EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」>htm

(2)嚴格型(Strict )
<!DOCTYPE html PUBLIC 「-//W3C//DTD XHTML 1.0 Strict//EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」>文檔

(3)框架型(Frameset )
<!DOCTYPE html PUBLIC 「-//W3C//DTD XHTML 1.0 Frameset//EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd」>it

如何斷定如今是標準模式仍是怪異模式:

方法一:執行如下代碼
alert(window.top.document.compatMode) ;
//BackCompat  表示怪異模式
//CSS1Compat  表示標準模式

方法二:jquery爲咱們提供的方法,以下:
alert($.boxModel)
alert($.support.boxModel)

 

所謂的標準模式是指,瀏覽器按W3C標準解析執行代碼;怪異模式則是使用瀏覽器本身的方式解析執行代碼,由於不一樣瀏覽器解析執行的方式不同,因此咱們稱之爲怪異模式。瀏覽器解析時到底使用標準模式仍是怪異模式,與你網頁中的DTD聲明直接相關,DTD聲明定義了標準文檔的類型(標準模式解析)文檔類型,會使瀏覽器使用相應的方式加載網頁並顯示,忽略DTD聲明,將使網頁進入怪異模式(quirks mode)。

相關文章
相關標籤/搜索