在 IE8 中使用文本兼容模式

作者:vkvi整理 来源:ITPOW(原创) 日期:2009-1-23

IE8 目前还是 beta 版本,所以此文也许会与正式版本不兼容,但据微软的作风来看,可能性不大。

IE8 最大限度地支持 W3C 的标准,但并没有放弃对之前的网页的兼容,所以它支持多种模式,如何让 IE8 知道该使用哪种模式呢?在 IE8 中支持文本兼容性模式,通过在网页中指定文本模式,让 IE8 知道该使用哪种模式。

具体做法,就是在 HEAD 区增加一个 META 元素。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Content 属性指定了该页面的模式;例如,要模仿 Windows Internet Explorer 7 的行为,请指定 IE=EmulateIE7。同样,可指定 IE=5IE=7IE=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,所以代码应该是这样:

if (document.documentMode)
{
    //IE8
}
else if (document.compatMode)
{
    //IE 5 - 7
    if (document.compatMode == "CSS1Compat")
    {
        //标准模式(standards mode)
    }
    else
    {
        //兼容模式(quirks mode)
    }
}

使用条件注释

<!--[if gte IE 8]>
<style type="text/css">
body {
 color:#0000ff;
 background-color:#000000;
}
</style>
<![endif]-->
<!--[if lt IE 8]>
<style type="text/css">
body {
 color:#000000;
 background-color:#ffffff;
}
</style>
<![endif]-->

我并不推荐这个,主要是把代码搞得太复杂了。

最后,关于 IE8 的开发者资源,您可以参见 http://msdn.microsoft.com/zh-cn/ie/default.aspx

相关文章