一、瀏覽器呈現(xiàn)模式和doctype
有的網(wǎng)頁(yè)是遵循標(biāo)準(zhǔn)而創(chuàng)作的,但也有很多不是。即使你不能創(chuàng)建遵循標(biāo)準(zhǔn)的網(wǎng)頁(yè),也希望瀏覽器根據(jù)標(biāo)準(zhǔn)來(lái)正確顯示那些頁(yè)。目前,大量網(wǎng)頁(yè)充斥著大量非標(biāo)準(zhǔn)代碼,它們?nèi)阅苷5毓ぷ?。事?shí)上,為舊版瀏覽器設(shè)計(jì)的大多數(shù)代碼都能在新版瀏覽器中正確顯示(雖然呈現(xiàn)方式可能有所區(qū)別)。這是什么原因呢?事實(shí)上,假如嚴(yán)格遵循最新標(biāo)準(zhǔn),會(huì)完全破壞那些頁(yè)的生存基礎(chǔ)。對(duì)于任何希望有所作為的瀏覽器來(lái)說(shuō),這當(dāng)然是令人無(wú)法接受的。
瀏覽器呈現(xiàn)模式
現(xiàn)代瀏覽器包括不同的呈現(xiàn)模式,目的是既支持遵循標(biāo)準(zhǔn)的網(wǎng)頁(yè),也支持為老式瀏覽器而設(shè)計(jì)的網(wǎng)頁(yè)。其中, Standards (標(biāo)準(zhǔn))模式(也就是嚴(yán)格呈現(xiàn)模式)用于呈現(xiàn)遵循最新標(biāo)準(zhǔn)的網(wǎng)頁(yè),而 Quirks (包容)模式(也就是松散呈現(xiàn)模式或者兼容模式)用于呈現(xiàn)為傳統(tǒng)瀏覽器而設(shè)計(jì)的網(wǎng)頁(yè)。另外,注意Mozilla/Netscape 6新增了一種 Almost Standards (近似標(biāo)準(zhǔn))模式,用于支持為標(biāo)準(zhǔn)的某個(gè)老版本而設(shè)計(jì)的網(wǎng)頁(yè)。
什么是 doctype切換?
放在網(wǎng)頁(yè)頂部的doctype聲明是讓瀏覽器進(jìn)入正確呈現(xiàn)模式的關(guān)鍵。瀏覽器自動(dòng)切換到恰當(dāng)?shù)某尸F(xiàn)模式,以便正確顯示由doctype聲明所指定的文檔種類。
理論上,這應(yīng)該是一個(gè)非常直觀的切換。假如doctype指出當(dāng)前網(wǎng)頁(yè)是一個(gè)遵循標(biāo)準(zhǔn)(也就是HTML 4+或XHTML 1+)的文檔,瀏覽器就會(huì)切換到Standards模式。假如沒(méi)有指定doctype,或者指定HTML 3.2以及更老的版本,瀏覽器就切換到Quirks模式。這樣一來(lái),瀏覽器既能正確顯示遵循標(biāo)準(zhǔn)的文檔,又不至于完全舍棄老式的、與標(biāo)準(zhǔn)不符的網(wǎng)頁(yè)。
doctype切換的問(wèn)題
但是,doctype切換是一個(gè)不完善的方案。即使你在Web文檔中使用了一個(gè)doctype聲明,瀏覽器也可能不會(huì)采取你希望的呈現(xiàn)模式來(lái)顯示網(wǎng)頁(yè)。原因是多方面的,包括形式錯(cuò)誤的doctype,以及不同<?xml version="1.0" encoding="UTF-8"?>) 開(kāi)頭,其中包括XHTML網(wǎng)頁(yè)。然而,IE,Opera和舊版Safari都希望文檔的第一行是doctype聲明。所以,如果在它之前還有其他任何東西(包括XML prolog),就無(wú)法識(shí)別doctype。因此,XML prolog的存在會(huì)使IE,Opera和Safari進(jìn)入Quirks模式。XML prolog并非必需的,所以你可在XHTML網(wǎng)頁(yè)中安全地省略它。注意:一定要在http-equiv meta標(biāo)記中包括一個(gè)charset屬性,以彌補(bǔ)XML prolog中缺失的encoding屬性。
丟失的URL或者相對(duì)URL:
在完整的doctype聲明中,要包括相應(yīng)的文檔類型定義(DTD)文件的URL。如果URL丟失,或者指定的是一個(gè)相對(duì)路徑(而不是完全限定的Internet地址),大多數(shù)瀏覽器都會(huì)進(jìn)入Quirks模式,不管doctype聲明規(guī)定的是什么模式。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注