|
作為開(kāi)發(fā)人員,特別是作為Web的前端開(kāi)發(fā)人員,最悲催的莫過(guò)于要不斷的,不斷的去調(diào)試各種瀏覽器的顯示效果,而這其中最讓人頭痛的莫過(guò)于MS下的IE系列瀏覽器,在IE系列中的調(diào)試我們將會(huì)發(fā)現(xiàn)沒(méi)有一個(gè)是好伺候的,于是不得不學(xué)習(xí)各種Hack技術(shù)來(lái)滿足各種瀏覽器之間的兼容。在這種痛苦中不斷的掙扎,MS可能也實(shí)在是看不下去了,于是在IE8開(kāi)始,微軟引入了文檔兼容性,而這,終于可以讓前端的開(kāi)發(fā)人員稍微能夠喘口氣。 文檔兼容性是對(duì) Microsoft Internet Explorer 6 中引入的兼容性模式的擴(kuò)展,使您可以選擇 Internet Explorer 用于顯示網(wǎng)頁(yè)的特定呈現(xiàn)模式。——微軟的官方文檔。 在這里先介紹兩個(gè)概念:瀏覽器模式(browser mode)和文檔模式(document mode)。這兩個(gè)模式的引入,讓我們?cè)贗E瀏覽器上能夠簡(jiǎn)單的處理兼容性問(wèn)題,當(dāng)然,其實(shí)也并不簡(jiǎn)單,先看看這兩個(gè)概念的定義: 瀏覽器模式(browser mode):于切換IE針對(duì)該網(wǎng)頁(yè)的默認(rèn)文檔模式、對(duì)不同版本瀏覽器的條件備注解析、發(fā)送給網(wǎng)站服務(wù)器的用戶(hù)代理(User-Agent)字符串的值。網(wǎng)站可以根據(jù)瀏覽器返回的不同用戶(hù)代理字符串判斷瀏覽器的版本和安裝的功能,這樣就可以向不同的瀏覽器返回不同的頁(yè)面內(nèi)容。 默認(rèn)情況下,IE8的瀏覽器模式為IE8。用戶(hù)可以通過(guò)單擊地址欄旁邊的兼容性視圖按鈕來(lái)手動(dòng)切換到不同的瀏覽器模式。在IE8中,IE8兼容性視圖會(huì)以IE7文檔模式來(lái)顯示網(wǎng)頁(yè),同時(shí)會(huì)向服務(wù)器發(fā)送IE7的用戶(hù)代理字符串。 文檔模式(document mode):用于指定IE的頁(yè)面排版引擎(Trident)以哪個(gè)版本的方式來(lái)解析并渲染網(wǎng)頁(yè)代碼。切換文檔模式會(huì)導(dǎo)致網(wǎng)頁(yè)被刷新,但不會(huì)更改用戶(hù)代理字符串中的版本號(hào),也不會(huì)從服務(wù)器重新下載網(wǎng)頁(yè)。切換瀏覽器模式的同時(shí),瀏覽器也會(huì)自動(dòng)切換到相應(yīng)的文檔模式。 簡(jiǎn)而言之:瀏覽器模式的改變,能夠改變請(qǐng)求中User Agent的值,讓服務(wù)器獲取后,能夠按照UA的值進(jìn)行對(duì)應(yīng)處理(如果服務(wù)器上有這個(gè)處理功能)。而文檔模式的改變只反映在本地的瀏覽器解析HTML上,對(duì)客戶(hù)端顯示會(huì)有影響,而對(duì)服務(wù)器透明。同時(shí),修改瀏覽器模式會(huì)影響文檔模式,反之卻不成立。 使用文檔兼容性的方法比較容易,就是在我們要反饋給客戶(hù)端的HTML代碼中的head中添加一個(gè)meta元素,用來(lái)描述當(dāng)前的文檔需要使用何種瀏覽器版本來(lái)解釋當(dāng)前文檔,代碼類(lèi)似下面這樣:
X-UA-compatible在使用中,大小寫(xiě)不敏感,如果你需要客戶(hù)端模擬其他的瀏覽器版本來(lái)解析文檔你可以設(shè)置為對(duì)應(yīng)的版本即可,通常的設(shè)置有如下幾種: 文檔兼容性設(shè)置 X-UA-compatible
當(dāng)然,除了這之外,你還可以設(shè)置其他值,甚至可以是7.5這樣的數(shù)值(個(gè)人不建議),IE解釋的時(shí)候,會(huì)嘗試將數(shù)值轉(zhuǎn)為最接近的版本。chrome這個(gè)是使用Chrome插件來(lái)處理當(dāng)前的文檔內(nèi)容,你也可以在HTML中插入下面的代碼,以便在用戶(hù)沒(méi)有安裝Chrome插件的時(shí)候,提醒用戶(hù):
這樣在用戶(hù)訪問(wèn)的時(shí)候,如果發(fā)現(xiàn)沒(méi)有安裝Chrome插件,就會(huì)提示安裝Chrome插件。 到這里,我們基本上已經(jīng)知道怎么使用X-UA-Compatible標(biāo)頭了,讓我們更進(jìn)一步! 其實(shí),X-UA-Compatible不僅可以用meta元素放在頁(yè)面內(nèi),也可以在服務(wù)器上進(jìn)行配置,比如在IIS上配置默認(rèn)的Header,或者在使用.NET中配置web.config文件,讓服務(wù)器端配置上默認(rèn)的標(biāo)頭,這樣系統(tǒng)就有默認(rèn)的標(biāo)頭來(lái)指定全局的文檔模式。因?yàn)閱蝹€(gè)頁(yè)面的文檔模式設(shè)置會(huì)覆蓋默認(rèn)的文檔模式,因此,在某個(gè)需要特殊的文檔模式展示的頁(yè)面可以在進(jìn)行單獨(dú)配置meta元素即可。 在IIS7中的配置X-UA-Compatible標(biāo)頭如下: |
|
|
來(lái)自: 低調(diào)渲染lh1sll > 《前端開(kāi)發(fā)》