兼容模式的由来
IE按照W3C的标准开发了新版本,为是旧版本同样能使用,微软在IE8以后加入了所谓的兼容性模式,也就是能够在旧的网站使用兼容性模式浏览,而一切正常,而到比较新的网站就用正常模式浏览。
特别注意的是, 兼容模式是从IE8 才开始有的。
如何定义兼容模式
对于兼容模式,微软的给我们的解决方案是设置X-UA-Compatible。
X-UA-compatible 标头不区分大小写;不过,它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前的标头中。
语法也很简单,在html中加入
<meta http-equiv="X-UA-Compatible" content="IE=7" />
以上的作用是:
无论是否用DTD声明文档标准,IE8/9都会以IE7引擎来渲染页面。
content 除了设置成IE=7, 还可以设置成:
1.<
meta
http-equiv
=
"X-UA-Compatible"
content
=
"IE=edge,chrome=1"
/>
这样写可以达到的效果是如果安装了GCF(谷歌内嵌浏览器框架GCF),则使用GCF来渲染页面,如果未安装GCF,则使用最高版本的IE内核进行渲染。
备注:谷歌内嵌浏览器框架
Google Chrome Frame(谷歌内嵌浏览器框架GCF)。这个插件可以让用户的IE浏览器外不变,但用户在浏览网页时,实际上使用的是Google Chrome浏览器内核,而且支持IE6、7、8等多个版本的IE浏览器
2. content="IE=EmulateIE7"
根据 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。
3.<
meta
http-equiv
=
"X-UA-Compatible"
content
=
"chrome=1"
>
4. 通过修改HTTP头文件的方法来实现让指定的页面使用GCF内核进行渲染:
在HTTP的头文件中加入以下信息:X-UA-Compatible: chrome=1
在Apache服务器中,确保 mod_headers 和 mod_setenvif文件可用,然后在httpd.conf中加入以下配置信息:
<
IfModule
mod_setenvif.c>
<
IfModule
mod_headers.c>
BrowserMatch chromeframe gcf
Header append X-UA-Compatible "chrome=1" env=gcf
</
IfModule
>
</
IfModule
>
<
configuration
>
<
system.webServer
>
<
httpProtocol
>
<
customHeaders
>
<
add
name
=
"X-UA-Compatible"
value
=
"chrome=1"
/>
</
customHeaders
>
</
httpProtocol
>
</
system.webServer
>
</
configuration
>