當微軟開始產生與標準兼容的瀏覽器時,他們希望確保向后兼容性。為了實現這一點,他們IE6.0以后的版本在瀏覽器內嵌了兩種表現模式:
Standards Mode(標準模式或Strict Mode)和Quirks mode(怪異模式或兼容模式Compatibility
Mode)。在標準模式中,瀏覽器根據W3C所定的規范來顯示頁面;而在怪異模式中,頁面將以IE5,甚至IE4的顯示頁面的方式來表現,以保持以前的網
頁能正常顯示。
對于這兩種模式引起最大的問題就是盒模式的問題,或者現在大家已經忽視了IE5的存在,但是,IE在怪異模式運行的盒模式依然在最新版本的IE7保留著,一旦應用不得當,IE7將變成跟IE5一樣愚蠢。
當然,不只IE瀏覽器存在兩種模式。
Opera 瀏覽器 (Opera 7~8) 支持與 IE 相同的兩種呈現模式:Quirks Mode和 Standards Mode(有關詳細信息,請參閱 http://www.opera.com/docs/specs/doctype/),但是Opera9的Quirks Mode又不與之前的Quirks Mode呈現不一樣,比如不再兼容IE5那種盒模式。
Mozilla Firefox 1+ 支持三種呈現模式:Quirks Mode、Almost Standards
Mode(幾乎標準的模式)和 Standards Mode。Firefox 的 Almost Standards 模式對應于 IE 和
Opera 的 Standards 模式。其中的Almost Standards
Mode,除了在處理表格的方式方面有一些細微的差異之外,這種模式與標準模式基本相同。對于進入Quirks Mode的可參考http://www.mozilla.org/docs/web-developer/quirks/doctypes.html)
說了這樣多可能你還不知道是到底Mode是怎樣。現在試一下html 4的。
為什么要選擇html4 呢?因為太多人認為只有xhtml才是符合標準的,又有多少人真的在使用xhtml呢?
可以先打開前兩個看代碼比較一下.
- http://labs.aoao.org.cn/test/doctype/html4strict/
- http://labs.aoao.org.cn/test/doctype/html4/
- http://labs.aoao.org.cn/test/doctype/ishtml4strict/
當沒有使用DTD聲明或者使用HTML4以下(不包括HTML4)的DTD聲明時,基本所有的瀏覽器都是使用Quirks Mode呈現。
也就是前兩個code是一樣,可是為什么運行結果不一樣呢?因為第一個使用了DTD 聲明html是 html4 strict的文檔,IE6+的IE會開啟標準模式來處理網頁,第三個屬于一個垃圾的方式把IE引入 quirks mode ^_^ 我常常用這招哦
我只是列出兩個比較典型的問題,不同模式還會引起一大堆問題。有興趣的朋友可以再找一下資料。
其實關于瀏覽器的模式問題我還寫了很多,因為其他問題暫時沒發出來,只是最近看到無憂上又在鬧Web標準的事,突然發現某方連IE都不了解,哎!
document.compatMode可參考