X-UA-Compatible
X-UA-Compatible是神馬?
X-UA-Compatible是IE8的一個專有<meta>屬性,它告訴IE8采用何種IE版本去渲染網頁,在html的<head>標簽中使用。可以在微軟官方文檔獲取更多介紹。
為什麽要用X-UA-Compatible?
在IE8剛推出的時候,很多網頁由於重構的問題,無法適應較高級的瀏覽器,所以使用X-UA-Compatible標簽強制IE8采用低版本方式渲染。
使用下面這段代碼後,開發者無需考慮網頁是否兼容IE8瀏覽器,只要確保網頁在IE6、IE7下的表現就可以了。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
時至今日,IE6已被微軟判了死刑,我們在重構時應首先考慮更完善的IE8下的體驗,然後依次回退兼容IE7和6。令我擔憂的情況是當IE9正式發布時如果IE6在國內還沒被淘汰,那麽將出現前端工程師需要面臨4個IE版本的瘋狂局面(且4個版本顯示差異較明顯)。
給網站添加X-UA-Compatible標簽
我建議使用下面的X-UA-Compatible標簽:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
IE=edge告訴IE使用最新的引擎渲染網頁,chrome=1則可以激活Chrome Frame。
網頁中添加方法
在<head>下面添加上述代碼即可。WordPress則在主題header.php文件裏做修改。
這樣的方法簡單快捷,但是弊端是代碼將無法通過W3C驗證。其實這並不是問題,畢竟標準只是標準,如果只有這一個“錯誤”完全不會有任何不良的影響。
當然你可能像Sivan一樣有代碼潔癖和一定程度的標準癖,那麽我們還可以從服務器端進行這個設置,請繼續往下看。
Apache服務器設置方法
嗯??我們可以在Apache主機做一些設置讓服務器告訴IE采用何種引擎來渲染。在網站作用目錄找到或新建.htaccess文件,添加下面的內容保存即可。
<IfModule mod_setenvif.c> <IfModule mod_headers.c> BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge" env=ie BrowserMatch chromeframe gcf Header append X-UA-Compatible "chrome=1" env=gcf </IfModule> </IfModule>
Nginx服務器設置方法
現在很多朋友使用Nginx作為搭建環境,當然也是OK的。找到\nginx\conf\nginx.conf並編輯,在server { }區域裏(最好是閉合符前面起一行)添加下列代碼即可
add_header "X-UA-Compatible" "IE=Edge,chrome=1";
不清楚具體位置的請參考paul irish的配置文件。
好啦,上面就是3種常用的添加方法。我認為這個標簽主要是為重構者服務,如果代碼的兼容性很強那麽不用也罷。
Chrome Frame[1]:Chrome Frame可以讓舊版IE瀏覽器使用Chrome的WebKit渲染引擎處理網頁,因此舊版IE用戶可以體驗到包括HTML5在內的眾多現代網頁技術。
X-UA-Compatible