zoukankan      html  css  js  c++  java
  • 浏览器渲染模式选择之总结

    <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">

  • 相关阅读:
    Markdown语法
    window环境下获取python安装的路径
    JS 获取当天所在月的第一天的日期,最后一天日期,所在周的每天的日期,时间,所在每月日期,时间的计算
    Vue中父组件向子组件echarts传值问题
    echarts修改X、 Y坐标轴字体的颜色
    Ultibo--树莓派嵌入式系统开发工具
    mORMot使用synDBDataSet时字段类型不正确引起的问题
    UNIGUI接收普通消息和被动回复用户消息
    unigui验证微信服务器的有效性
    unigui不是单个网页相应的链接,而是整体Web Application,如何把webApp的子功能映射到微信公众号菜单?
  • 原文地址:https://www.cnblogs.com/qilinge/p/4967420.html
Copyright © 2011-2022 走看看