IE8 引入了一个新的概念叫“文档模式”(document mode)。页面的文档模式决定了可以使用什么功能。换句话说,文档模式决定了你可以使用哪个级别的 CSS,可以在 JavaScript 中使用哪些 API,以及如何对待文档类型(doctype)。到了 IE9,总共有以下 4 种文档模式。
·IE5:以混杂模式渲染页面(IE5 的默认模式就是混杂模式)。IE8 及更高版本中的新功能都无法使用。
·IE7:以 IE7 标准模式渲染页面。IE8 及更高版本中的新功能都无法使用。
·IE8:以 IE8 标准模式渲染页面。IE8 中的新功能都可以使用,因此可以使用 Selectors API、更多 CSS2 级选择符和某些 CSS3 功能,还有一些 HTML5 的功能。不过 IE9 中的新功能无法使用。
·IE9:以 IE9 标准模式渲染页面。IE9 中的新功能都可以使用,比如 ECMAScript5、完整的 CSS3 以及更多 HTML5 功能。这个文档模式是最高级的模式。
要强制浏览器以某种模式渲染页面,可以使用 HTTP 头部信息 X-UA-Compatible,或通过等价的 <meta> 标签来设置:
<meta http-equiv="X-UA-Compatible" content="IE=IEVersion">
注意:这里 IE 的版本(IEVersion)有以下一些不同的值,而且这些值并不一定与上述 4 种文档模式对应。
·Edge:始终以最新的文档模式来渲染页面。忽略文档类型声明。对于 IE8,始终保持以 IE8 标准模式渲染页面。对于 IE9,则以 IE9 标准模式渲染页面。
·EmulateIE9:如果有文档类型声明,则以 IE9 标准模式渲染页面,否则将文档模式设置为 IE5。
·EmulateIE8:如果有文档类型声明,则以 IE8 标准模式渲染页面,否则将文档模式设置为 IE5。
·EmulateIE7:如果有文档类型声明,则以 IE7 标准模式渲染页面,否则将文档模式设置为 IE5。
·9:强制以 IE9 标准模式渲染页面,忽略文档类型声明。
·8:强制以 IE8 标准模式渲染页面,忽略文档类型声明。
·7:强制以 IE7 标准模式渲染页面,忽略文档类型声明。
·5:强制将文档模式设置为 IE5,忽略文档类型声明。
没有规定说必须在页面中设置 X-UA-Compatible。默认情况下,浏览器会通过文档类型来确定是使用最佳的可用文档模式,还是使用混杂模式。
通过 document.documentMode 属性可以知道给定页面使用的是什么文档模式。这个属性是 IE8 中新增的,它会返回使用的文档模式的版本号(在 IE9 中,可能返回的版本号为 5、7、8、9);
var mode = document.documentMode;