木森林林常识库

木森林林常识库
专业信息资源分享平台

JavaScript中的DOM专有扩展-文档模式

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)。

分享:

评论