關於文檔模式、DCOTYPE聲明及嚴格模式

1.文檔模式

文檔模式的概念是由IE5.5引入,經過使用文檔類型(DOCTYPE)切換實現的。不一樣的文檔模式主要影響CSS內容的呈現,尤爲是瀏覽器對盒模型的解析,但在某些狀況下也會影響到JavaScript的解釋執行。html

文檔模式的種類

目前存在的文檔模式主要有四種:瀏覽器

  混雜模式(怪異模式 quirks mode):讓IE的行爲與(包含非標準特性的)IE5相同;安全

  標準模式(非怪異模式 standard mode):讓IE 的行爲更接近標準行爲(W3C標準)。框架

  準標準模式(有限怪異模式 almost standard mode):因爲該模式離W3C標準仍然有一段距離,所以被稱做準標準模式(或有限怪異模式)。IE六、7的標準模式實際上就是準標準模式,而IE8+纔有實質上的標準模式。在該模式下的瀏覽器特性有不少都是符合標準的,可是也存有例外。不標準的地方主要體如今處理圖片 間隙的時候(表格中使用圖片是問題最明顯)。函數

  超級標準模式:  IE8引入的一種新的文檔模式,超級文檔模式可讓IE以其全部版本中最符合標準的方式來解釋網頁內容ui

  準標準模式與標準模式的區別幾乎能夠忽略不計。所以,有時候說的「標準模式」,有多是這兩種模式的任一種。spa

開啓文檔模式:

對於標準模式,能夠用下面的任何一種文檔類型來開啓:code

<!-- HTML 4.01 嚴格型 -->
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 嚴格型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--HTML 5--> <!DOCTYPE html>

 對於準標準模式,可使用過渡型(transitional)或框架集型(frameset)的文檔類型來觸發:htm

<!-- HTML 4.01 過渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

<!-- XHTML 1.0 過渡型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

2.<!DOCTYPE>聲明

  DOCTYPE是document type(文檔類型)的簡寫形式。用來講明使用的XHTML或者HTML的版本。其中的DTD(例如上面提到的的xhtml1-transitional.dtd)叫文檔類型定義,裏面包含了文檔的規則,瀏覽器就根據你定義的DTD來解釋你頁面的標識,並展示出來。幾種DTD的聲明見文檔模式的開啓。blog

<!DOCTYPE>聲明的做用:

  聲明文檔的解析類型(document.compatMode),避免混雜模式(怪異模式)。

  document.compatMode:
    BackCompat:怪異模式,瀏覽器使用本身的怪異模式解析渲染頁面。
    CSS1Compat:標準模式,瀏覽器使用W3C的標準解析渲染頁面。

  若是在文檔那個開始處沒有發現文檔類型聲明,則全部瀏覽器都會默認開啓混雜模式(按照本身的方式解析渲染頁面),由於不一樣瀏覽器在該模式下的行爲差別很是大,(若是不使用某些hack技術)從而致使跨瀏覽器的不一致性。

<!DOCTYPE>的使用:

  在html頁面的第一行添加<!DOCTYPE>的聲明便可。其中幾種聲明方式前面已經提到過。注意,使用HTML 5的話,直接在文檔開頭添加<!DOCTYPE html>便可。

 

3.嚴格模式

ECMAScript 5引入了嚴格模式(strict mode)的概念。嚴格模式是爲JavaScript定義了一種不一樣的解析與執行模型。在嚴格模式下,ECMAScript3中的一些不肯定的行爲將會獲得處理,並且對某些不安全的操做也會拋出錯誤。

嚴格模式的使用:

整個腳本中啓用嚴格模式:在腳本的頂部添加代碼:"use strict";

局部啓用嚴格模式:好比指定某函數在嚴格模式下執行:

function doSomething(){ "use strict"; //函數體 }

其實,"use strict"這句代碼是一個編譯指示(pragma),用來告訴支持的JavaScript引擎切換都嚴格模式下。這是爲了避免破壞ECMAScript3的語法二特地選定的語法。在該模式下,JavaScript的執行結果會有很大的不一樣。

相關文章
相關標籤/搜索