安装了IE8后,做为前端开发一员,马上试用了传说中的开发人员工具 (Developer Tool)中的三种文档模式(Document Mode):

  • 怪异模式(Quirks mode)
  • IE7标准(IE7 standard mode)
  • IE8标准(IE8 standard mode)

在IE8标准模式下,有些网页的布局和 IE6/7不一样,为了兼容以前的版本,就有了现在的兼容性视图按钮兼容视图
和三种文档模式。   

     文档兼容性会告诉IE如何渲染您的网页,此文将解释何谓文档兼容性,在您的网站指定何种文档兼容模式及怎样明确网页的文档模式。

楔言   

     为了保证网页外观在未来的 IE浏览器版本中保持一致,IE8引入了文档兼容性,是IE6兼容模式的一种扩展,文档兼容性促使您选择特定的渲染模式,这种渲染模式正是IE浏览器经常显式您网页的模式。

了解文档兼容的必要性   

  每次发布的IE版本增加了一些新的功能设计,使浏览器更加容易使用,以提高安全性,以及更密切地支持行业标准。当IE提供这些新功能时,老网站可能存在无法正确显示的风险。

  为了降低风险,IE6允许网站开发者选择不同方式来解析显示他们的网页,“怪异模式”是默认模式;它显示的结果和老版IE显示是一样的,“标准模式”(也称为“严格模式”)特别尽可能的支持行业标准;然而,为了强调这个特点,网页需要指定doctype

   没有指定doctype,IE6将在怪异模式下显示网站,如果网站包含了浏览器不能识别但是有效的doctype时,IE6会以IE6的标准模式呈现网站,因为有些网站存在doctype,兼容模式会很快的转换,允许网站开发者在最短时间内把网站更新为标准模式。

  一段时间后,网站已适应了标准模式。网站开发员开始运用IE6的特点和性能来检测IE浏览器。比如,IE6不支持全局选择器;一些网站会使用这个来指定浏览器显示某些内容。

  IE7提供新特性,如支持全局选择器,更接近行业标准。doctype只支持两种模式(怪异模式和标准模式),IE7标准模式代替了IE6标准模式。

  结果,符合IE6特性的网站检测不出新版浏览器,指定内容不能如愿的在IE7下正确显示。IE7只支持两种兼容模式,为了适应IE7,网站不得不改版。

  与以往的版本相比,IE8几乎接近行业标准,符合老版浏览器的网站又可能不会如您所想的那样正确呈现。为了缓和诸类问题,IE8引入文档兼容性的概念,让您指定网站所支持的浏览器版本。文档兼容添加新模式,这些模式指引浏览器解析和渲染网站。如果在IE8中不能正确呈现网站,您可以更新网站以支持最新的标准模式(推荐)或者强迫IE8像老版浏览器一样显示网站,可以在网页中使用meta元素添加 X-UA-Compatible header。以上任您选择,如果您要更新您的网站以支持IE8最新特性。

指定文档兼容模式   

  为了指定网页的文档模式,在网页中使用包含X-UA-Compatible http-equiv header的meta元素,以下示例指定Emulate IE7模式: emie7

content 属性指明了页面的模式,为模仿IE7特性,指明IE=EmulateIE7.指定IE=5,IE=7,或者IE=8选择其中一种兼容模式,也可以指明 IE=edge告诉IE8使用可行的最高模式。 X-UA-compatible header大小写不敏感,但是,它必须在页面head部分中所有元素之前,除了title和其它meta元素。

在服务器上指明文档兼容模式

  网站管理员也可以通过配置站点服务器来指定默认的文档兼容模式。以下示例,配置IIS,渲染页面时以IE7模式渲染。 web

参考:配置 Apache    配置IIS

明确文档兼容模式

为了明确在使用IE8时网页的文档兼容模式,应用document对象中的documentMode属性。例如,在IE8地址栏输入以下代码:

javascript:alert(document.documentMode);

将会显示当前页面的文档模式。

documentMode返回的是与当前页面文档兼容模式一致的数值。假如页面支持的是IE8模式,documentMode返回的是8。

IE8 不推荐使用IE6中引入的compatMode属性,支持使用documentMode。如果您想通过Javascript明确文档兼容模式,可参考以下代码:

engine=null;
if(window.navigator.appName=="Microsoft Internet Explorer"){
if(document.documentMode){//IE8
engine=document.documentMode;
}else{//IE 5-7
engine=5;//假设为quirks mode怪异模式
if(document.compatMode){
if(document.compatMode=="CSS1Compat"){
engine=7;//standards mode标准模式
}
}
}
}

原文:http://msdn.microsoft.com/zh-cn/library/cc288325(en-us,VS.85).aspx

 posted on 2010-05-12 21:21  watertree  阅读(784)  评论(0编辑  收藏  举报