严格模式与混合模式

在前端开发的调试中,有可能会要求知道严格模式和混杂模式(严格模式与非严格模式有的程序员喜欢这样称),而要知道严格模式和混杂模式,首先要知道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了,目前不管做什么网站都要考虑兼容问题


原文地址:https://www.cnblogs.com/wu-Chihiro/p/5997236.html