掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
今天有一個(gè)做開發(fā)的朋友突然問你知道很多網(wǎng)站上面加入的X-UA-Compatible屬性的意義么?其實(shí)這個(gè)在以前還專門花了一點(diǎn)時(shí)間來驗(yàn)證我自己的想法,結(jié)果也確實(shí)如自己所預(yù)想的那樣,八九不離十,當(dāng)然有一點(diǎn)點(diǎn)的偏差。我做的項(xiàng)目中也并不是每個(gè)項(xiàng)目中都使用該屬性。那么我們首先來看看幾個(gè)知名站點(diǎn),他們也使用了這個(gè)
上面時(shí)淘寶的,下面是百度的。
都可以發(fā)現(xiàn)在head中又一個(gè)meta,里面有一個(gè)X-UA-Compatible的屬性,而且確實(shí)非常多的網(wǎng)站中在使用。當(dāng)然也有很多網(wǎng)站是在開發(fā)的時(shí)候不管三七二十一給加上去的,理由可能就是看到別人在用。而我這位朋友問的恰好就是這個(gè),他跟我一樣,非常喜歡知根知底,我覺得這對(duì)于開發(fā)來講是好事;因?yàn)樵俸?jiǎn)單的東西深入一點(diǎn)總會(huì)更好的。
?<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
就是上面的一小段,那么他到底有什么用了?其實(shí)你可以百度下“IE=edge,chrome=1”,絕對(duì)能發(fā)現(xiàn)很多相關(guān)的文章,但那些文章只是復(fù)述人家的話,那些寫文章的也許根本就沒有嘗試。比如解釋最多的就是“強(qiáng)制瀏覽器的渲染方式,默認(rèn)使用chrome來渲染,然后再按照IE該瀏覽器的最新版本來渲染”,類似這樣意思的觀點(diǎn)最多了,而且是點(diǎn)到為止。
當(dāng)然,這樣解釋并沒有方向性的錯(cuò)誤,但是對(duì)于很多想了解這個(gè)東西的人來講,看了這個(gè)要么不知道是說啥,要么就可能會(huì)誤解,比如誤解成加入這個(gè)不管是IE哪個(gè)版本都可以渲染成chrome(想想都覺得不現(xiàn)實(shí)嘛,如果這樣豈不是逆天了,微軟得哭暈在廁所,谷歌和開發(fā)者們會(huì)半夜都笑醒的)。
那么這篇文章我僅針對(duì)以上IE=edge,chrome=1來說事情,其他的屬性值請(qǐng)自行根據(jù)我下面的思路百度或Google自己理解消化。上面那個(gè)解釋沒有方向性的問題,確實(shí)是關(guān)于瀏覽器渲染問題,而且也確實(shí)是可以渲染IE成Chrome。
但這里就不得不提Google的一個(gè)項(xiàng)目,那就是Chrome Frame(項(xiàng)目主頁,需要翻墻),這個(gè)項(xiàng)目就是在不改變IE的外觀情況下使用Chrome內(nèi)核,就好比如果IE是個(gè)人,那么這個(gè)人的四肢不變,但把大腦給換了一樣。而上面的寫法跟這個(gè)項(xiàng)目是有關(guān)系的,但是我們現(xiàn)在去訪問這個(gè)頁面會(huì)顯示“Google Chrome Frame is no longer supported and retired as of February 25, 2014.”,也就是說在2014年的時(shí)候就已經(jīng)不提供支持服務(wù)了。
因此上面概況起來的意思是什么了?我覺得如果用誰都聽得懂的話來說就是以下幾個(gè)要點(diǎn):
- X-UA-Compatible確實(shí)是為了我們定義瀏覽器的渲染方式的;
- 如果存在客戶端Chrome Frame并啟用,那么瀏覽器訪問頁面會(huì)被Chrome內(nèi)核渲染(這一點(diǎn)沒太大意義,因?yàn)槟汩_發(fā)的項(xiàng)目不能要求用戶在客戶端來安裝Chrome Frame);也就是說IE瀏覽器變身Chrome是可以的,但前提是客戶端安裝了Chrome Frame,呵呵;
- 使用IE內(nèi)核瀏覽器來訪問,會(huì)渲染至該瀏覽器的最高版本,比如你使用IE9瀏覽器,那么就算在兼容模式切換至IE7,但仍會(huì)渲染成IE9的樣子(當(dāng)然IE7瀏覽器是不會(huì)渲染成IE9的,不然想想都好美麗)。
比如現(xiàn)在我在客戶端裝了Chrome Frame,然后我的IE瀏覽器是IE11,也就是說我服務(wù)器端已經(jīng)設(shè)置了X-UA-Compatible屬性的值為IE=edge,chrome=1,客戶端已經(jīng)安裝并啟用Chrome Frame。我現(xiàn)在用IE瀏覽器打開指定網(wǎng)頁。
咦,竟然在IE瀏覽器下看到了審查元素,而且點(diǎn)擊審查元素出現(xiàn)了在Chrome下幾乎一樣的控制臺(tái)。
這個(gè)過程就是這樣子啦,就如上面所說,其實(shí)呢X-UA-Compatible還有各種其他的寫法,這里就不再說了,可以按照上面的流程來嘗試,然后必然或多或少會(huì)有一點(diǎn)自己的理解和收獲。我個(gè)人認(rèn)為借鑒學(xué)習(xí)是必要的,但一定要有自我消化的意識(shí),大家共勉吧!
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流