2.3 兼容性視圖
兼容性視圖是一種機(jī)制,用來(lái)顯示為較早IE版本設(shè)計(jì)的網(wǎng)站,并不會(huì)妨礙對(duì)可互操作性Web標(biāo)準(zhǔn)的長(zhǎng)期采用。簡(jiǎn)而言之,它使IE在沒有“破壞Web”的情況下繼續(xù)前進(jìn),IE團(tuán)隊(duì)就是這樣聲明的。兼容性視圖建立在一些基本原則的基礎(chǔ)之上:
● 默認(rèn)情況下,所有網(wǎng)頁(yè)都運(yùn)行在IE 8標(biāo)準(zhǔn)模式中(“默認(rèn)標(biāo)準(zhǔn)”)。
● 通過(guò)兼容性視圖加載的頁(yè)面運(yùn)行在IE 7標(biāo)準(zhǔn)模式中。
● 當(dāng)在兼容性視圖中加載頁(yè)面時(shí),“用戶代理”字符串和條件注釋指出該瀏覽器是IE 7。
● 兼容性視圖應(yīng)用于整個(gè)域,包含子域在內(nèi)。
除非頁(yè)面通過(guò)X-UA-compatible <meta>標(biāo)記或HTTP頭,顯式指定了其文檔模式,否則,當(dāng)以下條件之一為真時(shí),網(wǎng)頁(yè)將以“兼容性視圖”顯示:
● 它的域出現(xiàn)在用戶的“兼容性視圖”設(shè)置列表中(通過(guò)單擊“兼容性視圖”按鈕添加,或者在“兼容性視圖設(shè)置”中人工插入)。
● 它的域出現(xiàn)在“兼容性視圖組策略”鍵中。
● 它的域出現(xiàn)在微軟兼容性視圖列表中。
● 它的域處于Intranet區(qū)域中,并且為所有intranet站點(diǎn)啟用了兼容性視圖。
● 對(duì)所有網(wǎng)站打開了兼容性視圖。
2.3.1 微軟兼容性視圖列表
在IE 8發(fā)布時(shí),很多常用網(wǎng)站在IE 8標(biāo)準(zhǔn)模式下運(yùn)行時(shí)都會(huì)中斷顯示。微軟認(rèn)為,一旦用戶在自己的系統(tǒng)中安裝了IE 8,這種情況就會(huì)妨礙用戶的日常瀏覽。于是就創(chuàng)建了“微軟兼容性視圖列表”來(lái)緩解這一情況;這個(gè)列表中包含了一些流行網(wǎng)站的域,這些網(wǎng)站更適于在IE 7兼容模式性運(yùn)行。這個(gè)列表中的所有域都將被加載到“兼容性視圖”中,直到網(wǎng)站的主人采取措施,確保它與IE 8保持兼容,以及(或者)請(qǐng)求遷移為止。
微軟最早是在IE 8候選版期間向用戶發(fā)布的“兼容性視圖列表”。這個(gè)列表是使用Windows Update發(fā)送的,可以通過(guò)微軟下載中心獨(dú)立下載。希望下載這個(gè)列表的用戶必須選擇接收并安裝它。開發(fā)人員不應(yīng)當(dāng)依賴于用戶來(lái)完成這一工作,因?yàn)椴⒉皇撬杏脩舳及惭b了這個(gè)列表。
這個(gè)列表本身是實(shí)現(xiàn)了ie8compatlistdescription命名空間的XML文檔。這個(gè)列表中的域被保存為<domain>標(biāo)記中的字符串。這個(gè)XML文檔包含在IE資源庫(kù)中(res://iecompat.dll/ iecompatdata.xml)(見代碼清單2-6)。
代碼清單2-6 從兼容性列表中選擇域(截至2009年10月)
<?xml version="1.0" encoding="utf-8" ?>
<ie8compatlistdescription
xmlns="http://www.microsoft.com/schemas/ie8compatlistdescription/1.0">
...
<domain>americanexpress.com</domain>
<domain>americangreetings.com</domain>
<domain>amtrak.com</domain>
...
</ie8compatlistdescription>
2.3.2 控制兼容性設(shè)置
用戶和開發(fā)人員可以通過(guò)大量的公開入口點(diǎn)來(lái)控制以兼容性視圖顯示的域。通過(guò)“兼容性視圖”按鈕來(lái)啟用這一功能是最方便的,當(dāng)這一功能可供使用時(shí),將在地址欄中顯示這一切換按鈕(見圖2-2)。通過(guò)單擊這一按鈕,可以為任何一個(gè)域來(lái)開啟和關(guān)閉兼容性視圖;這一切換事件將會(huì)對(duì)域進(jìn)行刷新,以顯示為期望狀態(tài)。