HTML文檔的文檔模式包括混雜模式和標准模式,這兩種模式主要影響CSS內容的呈現,但在某些情況下也會影響到JavaScript的解釋執行。
如果在文檔開始處沒有發現文檔類型聲明,則所有瀏覽器都會默認開啟混雜模式。但采用混雜模式不是什么值得推薦的做法,因為不同瀏覽器在這種模式下的行為差異非常大,如果不使用某些hack技術,跨瀏覽器的行為根本就沒有一致性可言。
我們都知道標准模式,在很多時候,准標准模式(過渡型和框架集型)和標准模式(嚴格型)都被稱為標准模式。那么問題來了,什么是混合模式?
混雜模式
為了搞明白什么是混雜模式,特意多搜索了幾篇文章,這些文章中給到的混雜模式的解釋如下:
在標准模式中,瀏覽器根據規范呈現頁面;在混雜模式中,瀏覽器按照自己的方式來解析代碼,頁面以一種比較寬松的向后兼容的方式顯示,就嚴格度上來說不如嚴格模式。混雜模式通常模擬老式瀏覽器(比如Microsoft IE 4和Netscape Navigator 4)的行為以防止老站點無法工作。
也就是說,混雜模式是為了能在不知道采用什么模式的情況下,以一種最保險的方式:模擬老式瀏覽器去呈現網頁。但為什么都不建議使用混雜模式呢?很可惜,沒查到太多信息,只查到一篇文章講到標准模式和混雜模式在盒模型及一些屬性上有區別,后面深入學習到了再來篇日記做記錄吧。
那如何區分標准模式和混合模式呢?以下有四種情況區分:
- 如果文檔中包含了嚴格的DOCTYPE,那瀏覽器會按照標准模式呈現;
- 如果文檔中包含了過渡的或者框架集的DTD和URI的DOCTYPE,那瀏覽器也會按照標准模式呈現;
- 如果DOCTYPE不存在或者缺少URI等,文檔會以混雜模式呈現;
- HTML5沒有DTD,語法相對比較寬松,沒有標准模式和混雜模式的區分。HTML5文檔的開頭要有<!DOCTYPE html>,其實也算是它的標准模式。
在搜索到的博客文章中,大部分介紹了兩種模式,同時還提到了模式觸發。但剛開始學習JS,真心好多不懂,但看了看,模式觸發大致就是瀏覽器會以什么模式呈現文檔,暫且不論了,后續接着學習。