定义IE的文档兼容模式

——————————————————
[2013-2-21更新]:新增对文档模式的理解。
——————————————————

朋友网V4版本昨天已发出,界面小清新,feeds组织方式大改观,新增个性化名片等,值得去体验一下。

之前的版本朋友网都是把文档模式指定为IE7,地球人都知道的语法:

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

这次改版kairee同学想跳过IE8,指定IE7和IE9,使用了MSDN文档推荐的语法:

<meta http-equiv="X-UA-Compatible" content="IE=7;IE=9" />

该文档还提供了一些信息:

The X-UA-Compatible header is not case sensitive; however, it must appear in the header of the webpage (the HEAD section) before all other elements except for the title element and other meta elements.

Because edge mode documents display webpages using the highest mode available to the version of Internet Explorer used to view them, it is recommended that you use this document mode for testing purposes only. Do not use it for production uses.

测试阶段,测试人员发现了一些IE8下的bug,发现在IE8下并没有以IE7的文档模式渲染页面,google之,很多人都遇到过这个情况,已有人做了书写方式测试,眼见为实,找来装有原生IE8的机器测试了一下,测试结果如下:

1.定义多种文档模式时,使用逗号(,),而非文档中提到的分号(;)

<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7,IE=EmulateIE9" />

2.或者以逗号升序连写的方式

<meta http-equiv="X-UA-Compatible" content="IE=7,9" />

查看测试结果截图

文档模式(document mode)是IE8引入的一个新概念。页面的文档模式决定了你可以使用哪个级别的CSS,可以使用JavaScript的哪些API,以及如何对待文档类型(doctype)。

从上面的例子可以看出“X-UA-Compatible”的值有两种方式:Emulate+IE版本号,单纯版本号。这两种有何区别呢?

  • Edge:始终以最新的文档模式来渲染页面。忽略文档类型声明。对于IE8,始终以IE8标准模式渲染页面。IE9亦如此。
  • EmulateIE9:如果声明了文档类型,则以IE9标准模式渲染页面,否则将文档模式设置为IE5。 EmulateIE8:如果声明了文档类型,则以IE8标准模式渲染页面,否则将文档模式设置为IE5。 EmulateIE7:如果声明了文档类型,则以IE7标准模式渲染页面,否则将文档模式设置为IE5。
  • 9:强制以IE9标准模式渲染页面,忽略文档类型声明。
  • 8:强制以IE8标准模式渲染页面,忽略文档类型声明。
  • 7:强制以IE7标准模式渲染页面,忽略文档类型声明。
  • 5:强制以IE5标准模式渲染页面,忽略文档类型声明。

发表评论