关于content=”IE=edge,chrome=1″介绍-让网页优先采用Chrome渲染
最近稍微了解了一下瀑布树这东东,在查看Wookmark jQuery plugin,注意到meta中有这么一句:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
其中http-equiv=”X-UA-Compatible”这个是IE8的专用标记,是用来指定Internet Explorer 8 浏览器模拟某个特定版本IE浏览器的渲染方式,以此来解决IE浏览器的兼容问题。
以前css hacker常用的模拟IE7渲染方式的代码:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
令我好奇的是文章第一段提到的代码中「content=”IE=edge,chrome=1″」一段,字面意思是指定IE使用chrome的渲染方式?还是让IE的皮使用后台的Chrome内核?
双核浏览器默认使用webkit内核
<meta name="renderer" content="webkit" />
Google Chrome Frame
查了一下,这段是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”」。
w3.org的html5验证
然而,下一个问题又来了,在w3.org的html5验证工具下:
介个也好解决,针对三种主流服务器,我们都可以在服务器端配置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";
检测ie是否安装了GCF插件
function GCFInstallCheck() { // Look for CF in the User Agent before trying more expensive checks var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf("chromeframe") >= 0) { return true; } if (typeof window['ActiveXObject'] != 'undefined') { try { var obj = new ActiveXObject('ChromeTab.ChromeFrame'); if (obj) { obj.registerBhoIfNeeded(); return true; } } catch(e) { // squelch } } return false; };
总结
- 如果支持Google Chrome Frame:GCF,则使用GCF渲染;
- 如果系统安装ie8或以上版本,则使用最高版本ie渲染;
- 否则,这个设定可以忽略。
你可以继续阅读相关【Google Chrome Frame , X-UA-Compatible】的文章。