zoukankan      html  css  js  c++  java
  • 关于文档模式、DCOTYPE声明及严格模式

    1.文档模式

    文档模式的概念是由IE5.5引入,通过使用文档类型(DOCTYPE)切换实现的。不同的文档模式主要影响CSS内容的呈现,尤其是浏览器对盒模型的解析,但在某些情况下也会影响到JavaScript的解释执行。

    文档模式的种类

    目前存在的文档模式主要有四种:

      混杂模式(怪异模式 quirks mode):让IE的行为与(包含非标准特性的)IE5相同;

      标准模式(非怪异模式 standard mode):让IE 的行为更接近标准行为(W3C标准)。

      准标准模式(有限怪异模式 almost standard mode):由于该模式离W3C标准仍然有一段距离,因此被称作准标准模式(或有限怪异模式)。IE6、7的标准模式实际上就是准标准模式,而IE8+才有实质上的标准模式。在该模式下的浏览器特性有很多都是符合标准的,但是也存有例外。不标准的地方主要体现在处理图片 间隙的时候(表格中使用图片是问题最明显)。

      超级标准模式:  IE8引入的一种新的文档模式,超级文档模式可以让IE以其所有版本中最符合标准的方式来解释网页内容

      准标准模式与标准模式的区别几乎可以忽略不计。因此,有时候说的“标准模式”,有可能是这两种模式的任一种。

    开启文档模式:

    对于标准模式,可以用下面的任何一种文档类型来开启:

    <!-- HTML 4.01 严格型 -->
    <!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <!-- XHTML 1.0 严格型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <!--HTML 5--> <!DOCTYPE html>

     对于准标准模式,可以使用过渡型(transitional)或框架集型(frameset)的文档类型来触发:

    <!-- HTML 4.01 过渡型 -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    
    <!-- HTML 4.01 框架集型 -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    
    <!-- XHTML 1.0 过渡型 -->
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <!-- XHTML 1.0 框架集型 -->
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

    2.<!DOCTYPE>声明

      DOCTYPE是document type(文档类型)的简写形式。用来说明使用的XHTML或者HTML的版本。其中的DTD(例如上面提到的的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。几种DTD的声明见文档模式的开启。

    <!DOCTYPE>声明的作用:

      声明文档的解析类型(document.compatMode),避免混杂模式(怪异模式)。

      document.compatMode:
        BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。
        CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。

      如果在文档那个开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式(按照自己的方式解析渲染页面),因为不同浏览器在该模式下的行为差异非常大,(如果不使用某些hack技术)从而导致跨浏览器的不一致性。

    <!DOCTYPE>的使用:

      在html页面的第一行添加<!DOCTYPE>的声明即可。其中几种声明方式前面已经提到过。注意,使用HTML 5的话,直接在文档开头添加<!DOCTYPE html>即可。

    3.严格模式

    ECMAScript 5引入了严格模式(strict mode)的概念。严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定的行为将会得到处理,而且对某些不安全的操作也会抛出错误。

    严格模式的使用:

    整个脚本中启用严格模式:在脚本的顶部添加代码:"use strict";

    局部启用严格模式:比如指定某函数在严格模式下执行:

    function doSomething(){
        "use strict";
        //函数体      
    }

    其实,"use strict"这句代码是一个编译指示(pragma),用来告诉支持的JavaScript引擎切换都严格模式下。这是为了不破坏ECMAScript3的语法二特意选定的语法。在该模式下,JavaScript的执行结果会有很大的不同。

  • 相关阅读:
    编码问题,编码到吐血
    dz验证码
    奇葩之mysql【四】找不到表了
    EntityFramework 使用Mysql数据库
    Create a custom output cache prodiver in asp.net4
    WPF一个很炫的控件
    yield grammar
    最大公约数的故事
    新人
    学习笔记 简单的amob A%B Problem
  • 原文地址:https://www.cnblogs.com/buchongming/p/5841258.html
Copyright © 2011-2022 走看看