zoukankan      html  css  js  c++  java
  • Quirks Mode and Standards Mode

    标准模式和怪癖模式的由来

      早期的web文档主要有两种版本:   一种为navigator写的,   另一种为IE写的.   当W3C创建web标准的时候,   浏览器不能马上使用它们,   因为这样将break现存的大部分网站.   为了实现向后兼容性浏览器厂商引入了两种模式,   对早期遗留的页面和新编写的标准兼容页面采取不同渲染方式.

      现在浏览器布局引擎使用的主要有三种模式:   怪癖模式,   接近标准模式(almost standards mode)和标准模式.   

    • 怪癖模式在IE浏览器中模拟IE5下的布局,   在其他浏览器中模拟navigator 4下的布局
    • 标准模式根据HTML和CSS规范进行渲染
    • 接近标准模式只针对一小部分特性进行怪癖实现

    浏览器如何决定使用哪种模式?

      对于HTML文档,   浏览器使用文档开始部分的doctype来决定渲染模式.   为了确保页面以标准模式渲染,在文档中应该准确声明doctype.   如下例子

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset=UTF-8>
        <title>Hello World!</title>
      </head>
      <body>
      </body>
    </html>

      上例中使用的<!doctype html>是最简单也是HTML5所推荐的.   早期版本的HTML标准有其他的声明,   现存的所有浏览器都会议标准模式渲染例子中的文档,   这其中包含古老的IE6.   这也就没有必要去选择其他复杂的doctype了.   如果确实需要使用其他的doctype,   可能会冒一些风险,   不恰当的使用将会触发接近标准模式或者怪癖模式.

      在声明doctype时须确保它位于HTML文档的最开始部分.   在doctype前面的任何注释或者XML声明都将在IE9及更老的版本中触发怪癖模式.

      doctype声明在HTML5中唯一的作用就是保证浏览器以标准模式渲染页面.

    XHTML

      如果XHTML页面的HTTP头部Content-type设置为application/xhtml+xml那么即使不设置doctype也会始终使用标准模式.   然而由于IE8不能识别该类型,   设置为application/xhtml+xml类型将会导致IE8触发下载对话框,   直到IE9才支持xhtml.

    参考:

    https://developer.mozilla.org/en-US/docs/Quirks_Mode_and_Standards_Mode

    http://en.wikipedia.org/wiki/Quirks_mode

  • 相关阅读:
    LeetCode Single Number
    Leetcode Populating Next Right Pointers in Each Node
    LeetCode Permutations
    Leetcode Sum Root to Leaf Numbers
    LeetCode Candy
    LeetCode Sort List
    LeetCode Remove Duplicates from Sorted List II
    LeetCode Remove Duplicates from Sorted List
    spring MVC HandlerInterceptorAdapter
    yum
  • 原文地址:https://www.cnblogs.com/qiudeqing/p/3370580.html
Copyright © 2011-2022 走看看