最近在整理網頁mate標簽,想著把常用的mate標簽記錄一下,有的可以解決IE不兼容的問題?,F在電腦普遍來說最低版本的IE也應該是IE8了,但是不排除某些落后的電腦機器依然是IE6.7,所以整理下相關資料以留備用。
優先使用 IE 最新版本和 Chrome
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<!-- 關于X-UA-Compatible -->
<meta http-equiv="X-UA-Compatible" content="IE=6" ><!-- 使用IE6 -->
<meta http-equiv="X-UA-Compatible" content="IE=7" ><!-- 使用IE7 -->
<meta http-equiv="X-UA-Compatible" content="IE=8" ><!-- 使用IE8 -->
以上標簽,所描述的就是根據不通代碼,打開網頁默認采用哪種模式,有說明可根據實際要求使用。(推薦使用第一段代碼)
其中chrome=1",這段是Google開發的一個Google Chrome Frame「Google Chrome 瀏覽器內嵌框架 – GCF」。使用GCF可以讓用戶的IE瀏覽器外觀不變,但用戶在瀏覽網頁時實際上使用的是Chrome的內核,并且支持Windows XP及以上系統的IE6/7/8。
而第一段中提到的代碼則是指定該頁面使用Chrome內核來做渲染,前提是用戶必須已經安裝了Google Chrome Frame。
官方對其定義:
可使用開放式網絡技術(如 HTML5 canvas 標記)立即啟動,甚至包括 Internet Explorer 6、7 或 8 尚不支持的技術。
利用 JavaScript 性能增強功能,使應用程序速度更快,響應更靈敏。
所以這段代碼則可以解釋為:如果安裝了GCF,則使用GCF來渲染頁面「”chrome=1″」,如果沒有安裝GCF,則使用最高版本的IE內核進行渲染「”IE=edge”」。
所說這樣寫可以兼容,但是在W3C的Html5驗證工具下:
就這對強迫癥患者產生了嚴重的心里陰影,duang.....
于是在網上查了下資料,可以針對三種主流服務器端配置http equiv規則:
1、apache服務器
確保 mod_headers 和 mod_setenvif 是available的,然后在httpd.conf「新版Apache的配置文件是 apache2.conf」或者在.htaccess中加入以下規則:
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
BrowserMatch chromeframe gcf
Header append X-UA-Compatible "chrome=1" env=gcf
</IfModule>
</IfModule>
2、Windows Server在IIS7或者更高版本的服務器,只需要修改web.config文件,添加如下信息即可:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name = "X-UA-Compatible" value = "chrome=1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
3、Nginx服務器
只需要找到ginx.conf并編輯,在server { }區域里(最好是閉合符前面起一行)添加下列代碼即可:
add_header "X-UA-Compatible" "IE=Edge, chrome=1";
完成,注意,虛擬主機的話只能添加在網頁的mate的標簽內,自己的服務區修改的時候也許謹慎,修改前注意備份。