博客
关于我
JS魔法堂:浏览器模式和文档模式怎么玩?
阅读量:425 次
发布时间:2019-03-06

本文共 1724 字,大约阅读时间需要 5 分钟。

文档模式与浏览器兼容性探索

从IE8开始,文档兼容模式的概念正式引入,为开发者在适配各版本IE时带来了极大的便利。然而,这一机制并非万能钥匙,开发者仍需深入理解其工作原理与局限性。

一、浏览器模式的起源

“浏览器模式”最初在IE11中被改名为“用户代理字符串”,主要用于设置navigator.userAgentnavigator.appVersion。这一设置会影响文档模式的选择,但在IE11中,文档模式与用户代理字符串的关系已被解耦。

  • IE89:文档模式与用户代理字符串的关系较为紧密,设置浏览器模式会直接影响文档模式的选择。
  • IE11及以后:文档模式与用户代理字符串的关系弱化,IE11默认采用浏览器自身版本的文档模式。

二、文档模式的定义与演变

文档模式主要影响浏览器对HTML、CSS的解析方式及JavaScriptAPI的行为。IE6及其后续版本逐步向W3C标准靠拢,但仍保留了IE5.5的怪异模式。

  • IE5.5:首个引入“怪异模式”(Quirks)的版本,主要用于解决IE5.5下与W3C标准不兼容的问题。
  • IE6:引入“兼容模式”(Quirks和IE6标准模式),解决旧网站在IE6上显示问题。
  • IE8:新增“文档兼容性模式”,提供更丰富的文档模式选择,包括怪异模式、标准模式和模拟模式。

三、文档模式的分类

  • 怪异模式

    • IE6789:IE5.5的文档模式。
    • IE10+及其他浏览器:默认采用W3C规范的怪异模式。
  • 标准模式

    • W3C标准的文档模式,但各浏览器的实现可能存在差异。
  • 准标准模式(有限怪异模式)

    • IE6、7的标准模式实际上是准标准模式,IE8+才有实质性的标准模式。
  • 四、IE8+设置文档模式的方式

    开发者可通过以下方式设置文档模式:

    • 开发者工具

      • 在IE的开发者工具中设置文档模式。
    • 元数据标签

      • 在head标签中加入<meta http-equiv="X-UA-Compatible" content="IE=7">,设置为IE7标准模式。
    • DOCTYPE声明

      • 通过<!DOCTYPE>标签切换标准模式与怪异模式。
    • Web服务器配置

      • 配置HTTP响应头X-UA-Compatible,如IIS的配置示例:

    五、<meta http-equiv="X-UA-Compatible">的作用

    • 默认情况:IE浏览器在没有<meta>标签时,采用怪异模式。
    • IE11
      • IE=10IE=11IE=Edge等值均为标准模式。
      • IE=EmulateIE10IE=10效果相同。

    六、文档模式的实际应用

    • 布局:盒子模型的差异可能导致表格、单元格样式异常。
    • 解析:CSS和HTML解析规则因文档模式不同而变化。
    • 脚本:JavaScript的行为和API调用结果可能受文档模式影响。

    七、IE10+的变化

    • 文档模式与渲染模式分离:IE10+将文档模式与盒子模型的渲染模式分开。
    • 怪异模式的实现:IE10+的怪异模式更接近W3C标准,与Webkit等浏览器的行为一致。

    八、文档模式的优化建议

  • 使用有效的DOCTYPE声明:确保盒子模型使用标准模式。
  • 明确目标浏览器范围:根据项目需求,选择需要适配的IE版本和其他浏览器。
  • 结合特征嗅探:在文档模式判断外,结合浏览器特性来确保兼容性。
  • 九、IE10+的文档模式与前端开发

    IE10+的文档模式虽然为W3C标准,但仍需考虑老旧浏览器的兼容性。开发者应:

    • 使用现代技术:如Flexbox、Grid等,减少依赖IE特有的布局技术。
    • 结合特征检测:通过JavaScript检测浏览器特性,弥补文档模式的不足。
    • 谨慎使用文档模式锁定:仅在必要时使用文档模式锁定,避免对后续维护造成困扰。

    十、总结

    文档模式是前端开发中不可或缺的一部分,但其设置与使用需谨慎。IE10+的文档模式与W3C标准的关联更加紧密,开发者应根据项目需求选择合适的文档模式,并结合特征嗅探和现代技术,提升开发效率与兼容性表现。

    转载地址:http://jjsuz.baihongyu.com/

    你可能感兴趣的文章
    PowerDesigner教程系列(二)概念数据模型
    查看>>
    Powerdesigner显示表的comment和列的comment的方法
    查看>>
    PowerDesigner最基础的使用方法入门学习
    查看>>
    PowerDesigner版本控制器设置权限
    查看>>
    PowerDesigner生成数据模型并导出报告
    查看>>
    QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显示在图层
    查看>>
    PowerDesigner逆向工程从SqlServer数据库生成PDM(图文教程)
    查看>>
    PowerEdge T630服务器安装机器学习环境(Ubuntu18.04、Nvidia 1080Ti驱动、CUDA及CUDNN安装)
    查看>>
    PowerPC-object与elf中的符号引用
    查看>>
    QFileSystemModel
    查看>>
    Powershell DSC 5.0 - 参数,证书加密账号,以及安装顺序
    查看>>
    PowerShell 批量签入SharePoint Document Library中的文件
    查看>>
    Powershell 自定义对象小技巧
    查看>>
    pytorch从预训练权重加载完全相同的层
    查看>>
    PowerShell~发布你的mvc网站
    查看>>
    PowerShell使用详解
    查看>>
    Powershell制作Windows安装U盘
    查看>>
    powershell命令
    查看>>
    PO、VO、DAO、BO、DTO、POJO能分清吗?
    查看>>
    PP-PLL:基于概率传播的部分标签学习
    查看>>