IE8 目前还是 beta 版本,所以此文也许会与正式版本不兼容,但据微软的作风来看,可能性不大。
IE8 最大限度地支持 W3C 的标准,但并没有放弃对之前的网页的兼容,所以它支持多种模式,如何让 IE8 知道该使用哪种模式呢?在 IE8 中支持文本兼容性模式,通过在网页中指定文本模式,让 IE8 知道该使用哪种模式。
具体做法,就是在 HEAD 区增加一个 META 元素。
Content 属性指定了该页面的模式;例如,要模仿 Windows Internet Explorer 7 的行为,请指定 IE=EmulateIE7。同样,可指定 IE=5、IE=7 或 IE=8 以选择其中一种兼容性模式。您还可以指定 IE=edge 以通知 Windows Internet Explorer 8 使用最高级别的可用模式。
X-UA-compatible 标头不区分大小写;但是,它必须显示在网页中除 TITLE 和其他 META 元素以外的所有元素之前的标头(HEAD 部分)中。
其他方式
除了直接在网页中使用 META 外,还有其他方式来实现兼容。
为整个站点配置 META
使用 JavaScript 脚本
document.compatMode,它有两种可能的返回值:BackCompat 和 CSS1Compat。用其返回值表示当前处于哪种模式,然后再根据模式使用不同的脚本,这个属性在 Firefox、Chrome 中也是有效的,但并没有必须在 Firefox、Chrome 中使用这个属性,因为他们对代码的解释不像 IE 各个版本样那么复杂。还有,非常不幸的是:在 IE8 中竟然没有了这个属性,而是用的 document.documentMode,所以代码应该是这样:
使用条件注释
我并不推荐这个,主要是把代码搞得太复杂了。
最后,关于 IE8 的开发者资源,您可以参见 http://msdn.microsoft.com/zh-cn/ie/default.aspx。