最近稍微了解了一下瀑布树这东东,在查看Wookmark jQuery plugin,注意到meta中有这么一句:
1.
<
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渲染方式的代码:
1.
<
meta
http-equiv
=
"X-UA-Compatible"
content
=
"IE=EmulateIE7"
>
令我好奇的是文章第一段提到的代码中「content=”IE=edge,chrome=1″」一段,字面意思是指定IE使用chrome的渲染方式?还是让IE的皮使用后台的Chrome内核?
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中加入以下规则:
1.
<
IfModule
mod_setenvif.c>
2.
<
IfModule
mod_headers.c>
3.
BrowserMatch chromeframe gcf
4.
Header append X-UA-Compatible "chrome=1" env=gcf
5.
</
IfModule
>
6.
</
IfModule
>
2、Windows Server在IIS7或者更高版本的服务器
只需要修改web.config文件,添加如下信息即可:
01.
<
configuration
>
02.
<
system.webServer
>
03.
<
httpProtocol
>
04.
<
customHeaders
>
05.
<
add
name
=
"X-UA-Compatible"
value
=
"chrome=1"
/>
06.
</
customHeaders
>
07.
</
httpProtocol
>
08.
</
system.webServer
>
09.
</
configuration
>
3、Nginx服务器
只需要找到ginx.conf并编辑,在server { }区域里(最好是闭合符前面起一行)添加下列代码即可:
1.
add_header "X-UA-Compatible" "IE=Edge, chrome=1";
总结
- 如果支持Google Chrome Frame:GCF,则使用GCF渲染;
- 如果系统安装ie8或以上版本,则使用最高版本ie渲染;
- 否则,这个设定可以忽略。