浏览器渲染模式选择之总结

<meta http-equiv="X-UA-Compatible" content="IE=7" />
以上代码告诉IE浏览器,无论是否用DTD声明文档标准,IE8/9都会以IE7引擎来渲染页面。

<meta http-equiv="X-UA-Compatible" content="IE=8" />
以上代码告诉IE浏览器,IE8/9都会以IE8引擎来渲染页面。

<meta http-equiv="X-UA-Compatible" content="edge" />
以上代码告诉IE浏览器,Windows以最高版本的IE显示内容。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
根据 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。对于用上IE9/IE10的人,想跳过IE8,指定在IE7和IE9中渲染,得使用了MSDN文档推荐的语法:

<meta http-equiv="X-UA-Compatible" content="IE=7;IE=9" />
但是,以上兼容IE7/IE9的语法方式,会在IE8里会导致BUG,发现在IE8下并没有以IE7的文档模式来渲染页面。

正确的语法规则:

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

补充:

1.X-UA-Compatible是针对ie8新加的一个设置,对于ie8之外的浏览器是不识别的,这个区别与 content="IE=7"在无论页面是否包含<!DOCTYPE>指令,都像是使用了 Windows Internet Explorer 7的标准模式。而content="IE=EmulateIE7"模式遵循<!DOCTYPE>指令。对于多数网站来说,它是首选的兼容性模 式。

2.X-UA-Compatible 是针对 IE8 版本的一个特殊文件头标记,用于为 IE8 指定不同的页面渲染模式。由于当下 IE6 和 IE7 使用率依然较高,综合考虑,启用 IE8 版本的 X-UA-Compatible 兼容模式显得相当重要。

各种兼容模式代码示例如下:

<meta http-equiv="X-UA-Compatible" content="IE=5" />
像是使用了 Windows Internet Explorer 7 的 Quirks 模式,这与 Windows Internet Explorer 5 显示内容的方式很相似。

<meta http-equiv="X-UA-Compatible" content="IE=7" />
无论页面是否包含 <!DOCTYPE> 指令,均使用 Windows Internet Explorer 7 的标准渲染模式。

<meta http-equiv="X-UA-Compatible" content="IE=8" />
开启 IE8 的标准渲染模式,但由于本身 X-UA-Compatible 文件头仅支持 IE8 以上版本,因此等同于冗余代码。

<meta http-equiv="X-UA-Compatible" content="edge" />
Edge 模式通知 Windows Internet Explorer 以最高级别的可用模式显示内容,这实际上破坏了“锁定”模式。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
EmulateIE7 模式通知 Windows Internet Explorer 使用 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。

文档模式(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标准模式渲染页面,忽略文档类型声明。

也许你在实际使用 X-UA-Compatible 的时候,可能会出现不管用的情况,其实,不能单单的只是加:meta,还需要,把DOCTYPE的定义去掉,其实这样就可以了:<!DOCTYPE html>  。快检查一下,你的代码中是不是还是这个:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 改掉试试。

几种出错的情况:

  1. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
    • IE7: behaves as expected
    • IE8: renders as IE7 (expected)
    • IE9(beta): renders as IE7 (not expected!)
  2. <meta http-equiv="X-UA-Compatible" content="IE=7; IE=9">
    • IE7: behaves as expected
    • IE8: renders as IE8 (not expected!)
    • IE9(beta): renders as IE9 (expected)
  3. <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">
    • IE7: behaves as expected
    • IE8: renders as IE7 (expected!)
    • IE9(beta): renders as IE9 (expected)
  4. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=9">
    • IE7: behaves as expected
    • IE8: renders as IE8 (not expected!)
    • IE9(beta): renders as IE9 (expected)
  5. <meta http-equiv="X-UA-Compatible" content="IE=7; IE=EmulateIE9">
    • IE7: behaves as expected
    • IE8: renders as IE7 (expected!)
    • IE9(beta): renders as IE7 (not expected!)
  6. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
    • all IEs render as IE7 (expected)
  7. <meta http-equiv="X-UA-Compatible" content="IE=7">
    • all IEs render as IE7 (expected)

其他几种情况:

360浏览器设置打开默认为chrome极速模式

<meta name="renderer" content="webkit">

若页面需默认用ie兼容内核,增加标签:

<meta name="renderer" content="ie-comp">

若页面需默认用ie标准内核,增加标签:

<meta name="renderer" content="ie-stand">

我们只需在网站的head标签中添加上面的代码,即可以相对应的模式来渲染网站。

同时我们也可以同时指定多个内核名称,之间以符号”|”进行分隔,如下代码:

<meta name="renderer" content="webkit|ie-comp|ie-stand">

<meta http-equiv= "X-UA-Compatible" content = "IE=edge,chrome=1"/>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="renderer" content="webkit">

posted @ 2015-11-15 21:25  麒麟阁  阅读(565)  评论(0编辑  收藏  举报