文檔范圍
本文包括的模式轉(zhuǎn)換(mode switching)適用于Firefox和其他基于Gecko的瀏覽器,Safari、Chrome和其他基于Webkit的瀏覽器,Opera、 Konqueror、Mac版Internet Explorer、Windows版Internet Explorer和內(nèi)嵌IE的瀏覽器。避免提及瀏覽器引擎的名字,取而代之的是使用該引擎最知名瀏覽器的名字。
本文著重介紹模式的選擇機(jī)制,而不是記錄每個(gè)模式的確切行為。
模式
以下是各種不同的模式:
內(nèi)容類型為text/html的模式
text/html內(nèi)容的模式選擇取決于doctype嗅探(doctype sniffing,本文后面有討論)。在IE8中,模式也取決于其他因素。然而在IE8的默認(rèn)情況下,那些不在微軟提供黑名單上的非局域網(wǎng)(non- intranet)站點(diǎn)的模式取決于文檔類型。
再怎么強(qiáng)調(diào)每個(gè)瀏覽器中模式精確行為的不同也是不過(guò)分的,即使本文中進(jìn)行了統(tǒng)一的討論。
怪癖模式(Quirks Mode) 怪癖模式中,為了避免“破壞”那些根據(jù)在20世紀(jì)90年代末流行的實(shí)踐創(chuàng)作的頁(yè)面,瀏覽器違反了現(xiàn)代的Web格式規(guī)范。不同的瀏覽器實(shí)現(xiàn)了不同的怪癖行為。Internet Explorer6、7和8中,怪癖模式有效地凍結(jié)在IE5.5 。其他瀏覽器中,怪癖模式是對(duì)準(zhǔn)標(biāo)準(zhǔn)模式的少量偏移。 如果正在創(chuàng)作新網(wǎng)頁(yè),你應(yīng)該符合相關(guān)的規(guī)范(特別是CSS2.1)且使用標(biāo)準(zhǔn)模式。 標(biāo)準(zhǔn)模式(Standards Mode) 標(biāo)準(zhǔn)模式中,瀏覽器嘗試給符合標(biāo)準(zhǔn)的文檔在規(guī)范上的正確處理達(dá)到在指定瀏覽器中的程度。 不同的瀏覽器遵循不同的階段,所以標(biāo)準(zhǔn)模式也不是一個(gè)單一目標(biāo)。 HTML5把這種模式叫“非怪癖模式(no quirks mode)” 準(zhǔn)標(biāo)準(zhǔn)模式(Almost Standards Mode) irefox、Safari、Chrome、Opera(從7.5開始)和IE8也有個(gè)叫“準(zhǔn)標(biāo)準(zhǔn)模式”的模式,它按照傳統(tǒng)的做法來(lái)實(shí)現(xiàn)表格單元格的垂直尺寸而不是嚴(yán)格的遵照CSS2規(guī)范。Mac IE5、Windows IE6和7、Opera7.5以前版本和Konqueror無(wú)需準(zhǔn)標(biāo)準(zhǔn)模式,因?yàn)樗鼈冎辽贈(zèng)]有在各自的標(biāo)準(zhǔn)模式下嚴(yán)格遵循CSS2規(guī)范來(lái)實(shí)現(xiàn)表格單元格垂直尺寸。實(shí)際上,它們的標(biāo)準(zhǔn)模式更接近Mozilla的準(zhǔn)標(biāo)準(zhǔn)模式而不是Mozilla的標(biāo)準(zhǔn)模式。 HTML5把這種模式叫著“受限怪癖模式(limited quirks mode)”。 IE7模式 IE8有個(gè)模式主要是凍結(jié)了IE7標(biāo)準(zhǔn)模式的副本。其他瀏覽器沒(méi)有像這樣的模式,且該模式也未被HTML5指定。
內(nèi)容類型為application/xhtml+xml的模式(XML模式)
Firefox、Safari、Chrome和Opera中,application/xhtml+xml HTTP內(nèi)容類型(不是meta元素也不是doctype!)會(huì)觸發(fā)XML模式。在XML模式中,瀏覽器嘗試給XML文檔在規(guī)范上的正確處理達(dá)到在制定瀏覽器中的程度。
IE6、7和8不支持application/xhtml+xml,Mac IE5也如此。
基于WebKit的Nokia S60 瀏覽器中,application/xhtml+xml HTTP內(nèi)容類型不能觸發(fā)XML模式,因?yàn)樵谝苿?dòng)的圍墻花園(mobile walled gardens)中關(guān)注點(diǎn)是對(duì)不規(guī)范內(nèi)容的兼容性。(舊式的“移動(dòng)瀏覽器”無(wú)法使用真正的XML解析器,因?yàn)椴灰?guī)范內(nèi)容已被標(biāo)記為XML。)