• 严格模式与混合模式


    在前端开发的调试中,有可能会要求知道严格模式和混杂模式(严格模式与非严格模式有的程序员喜欢这样称),而要知道严格模式和混杂模式,首先要知道DOCTYPE,先来看看

    1.DOCTYPE的定义
    DOCTYPE(是Document Type文档类型的简写)是一组机器可读的规则,它们指示(X)HTML文档中允许有什么,不允许有什么,DOCTYPE正是用来告诉浏览器使用哪种DTD,一般放在(X)HTML文档开头声明)用以告诉其他人这个文档的类型风格。

    2.如何触发(作为了解)

     加入xml头部声明可以触发IE浏览器的Quirks mode,触发之后,浏览器解析方式就和IE5.5一样,拥有IE5.5一样的bug和其他问题,行为(Javascript)也是如此。
      IE6的触发
    在XHTML的DOCTYPE前加入XML声明
        <?xml version="1.0" encoding="utf-8"?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    IE7的触发
    在XML声明和XHTML的DOCTYPE之间加入HTML注释

        <?xml version="1.0" encoding="utf-8"?>
        <!-- ... and keep IE7 in quirks mode -->
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    IE6和IE7都可以触发的
    在HTML4.01的DOCTYPE文档头部加入HTML注释

        <!-- quirks mode -->
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
      总结:各个浏览器的混杂模式,基本就是各个浏览器的私有模式,不相互兼容。所以,除非是为了兼容的问题,比如你不想修改很久很久以前做的IE ONLY的网页,否则刻意触发混杂模式没有任何意义。

    3.什么是严格模式?
      而严格模式是浏览器根据web标准去解析页面,是一种要求严格的DTD,不允许使用任何表现层的语法,如<br/>。

     什么是混杂模式?
      混杂模式则是一种向后兼容的解析方法,说的透明点就是可以实现IE5.5以下版本浏览器的渲染模式。

    4.触发严格模式
      触发严格模式很简单,就是正常的建立网页,声明正确的DTD,便是严格模式。

    触发混杂模式
    而混杂模式的触发可以通过在HTML文档开始不声明DTD,或者在DOCTYPE前加入XML声明l<?xml version=”1.0〃 encoding=”utf-8〃?>来实现。

    =================当然html5已经可以不用声明DTD了,目前不管做什么网站都要考虑兼容问题


  • 相关阅读:
    junit基础学习之-多线程测试(6)
    junit基础学习之-参数初始化(5)
    junit基础学习之-junit3和4的区别(4)
    junit基础学习之-断言注解(3)
    junit基础学习之-测试service层(3)
    java 实例 货币格式
    java md5 数据加密
    java 选择一个类,返回该实例对象
    java 输出为2的倍数的方法
    java 实例 设计一个方法,计算一个数的n次幂
  • 原文地址:https://www.cnblogs.com/wu-Chihiro/p/5997236.html
Copyright © 2020-2023  润新知