|
一般情況下,我們只會討論我們的網(wǎng)站如何主動兼容某某瀏覽器,被動地等待瀏覽器來兼容我們的網(wǎng)站是不切實際的幻想——哪個瀏覽器會那么偉大,原意主動為一個不兼容的網(wǎng)站而作出改變呢?IE8就是這樣一個偉大的瀏覽器,Microsoft就是一家這樣偉大的企業(yè)。
故事是這樣的,我們有一小段JavaScript依賴于userAgent屬性,同樣是用IE8進(jìn)行瀏覽,在測試環(huán)境上userAgent顯示為MSIE 7.0,而在生產(chǎn)環(huán)境上userAgent顯示為MSIE 8.0。為什么會這樣呢?打開Developer Toolbar后,發(fā)現(xiàn)原來是Browser Mode這個開關(guān)在搞鬼——當(dāng)Browser Mode是InterNET Explorer 8的時候,userAgent就是MSIE 8.0;當(dāng)Browser Mode是InterNET Explorer 8 Compatibility View(兼容性視圖)或InterNET Explorer 7的時候,userAgent就是MSIE 7.0了。
接下來的問題是,我們并沒有刻意去撥動這個開關(guān)啊,兩個相同的頁面怎么在不同的環(huán)境中默認(rèn)顯示為不同的Browser Mode呢?我的猜想是,這是由于域名不同而引起的——Microsoft自己維護(hù)著一個Compatibility View List,當(dāng)訪問該List中的站點時,IE8會自動啟用Compatibility View,也就是將Browser Mode切換到InterNET Explorer 8 Compatibility View。接著我在地址欄輸入以下地址,檢查了一下我本地最近更新的List:
res://iecompat.dll/iecompatdata.xml
事實表明,我們測試用的baidu.com域名確實在上述List中,但部署到baidu.jp后也就脫離了該List。這就很好地解釋了我們遇到問題,同時也提醒我們域名已經(jīng)成為了IE8測試中不可避免的一個緊耦合因素。在過去,我們可以簡單地認(rèn)為,部署在不同URL的相同頁面在同一款瀏覽器中顯示出來總是一樣的。但現(xiàn)在我們必須修正這句話了,僅當(dāng)不同URL都基于同一個域名時上述命題仍然成立。
通過這個案例,希望能讓大家了解到在開發(fā)與測試過程中保持域名一致的重要性。如果你開發(fā)的頁面要部署到example.com,你最好在develop.example.com上開發(fā),在test.example.com上測試,然后再部署。如果你需要在本機進(jìn)行開發(fā)測試,也要通過改hosts模擬一個localhost.example.com來進(jìn)行測試與調(diào)試,以確保代碼在最終部署后能執(zhí)行在相同的環(huán)境下。
it知識庫:你的網(wǎng)站「被兼容」了嗎?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。