W3C HTML5标准阅读笔记 - 基本规则

标准原文:http://www.w3.org/TR/html5/infrastructure.html

Common infrastructure这一章,标准对一些术语和规则用词进行了描述,以下是阅读后的一些摘录。

术语

  • 透明黑: 如以rgba值衡量,“透明黑”的红、绿、蓝、透明四个指标均为0。
  • XML MIME Type: “text/xml”, “application/xml”以及所有以”+xml”结尾的MIME Type均为XML MIME Type。
  • DOM对象有“实时”(live)与“非实时”之分。如果一个DOM对象是“实时”的,那么对其属性与方法所进行的操作会反映/改变真正的DOM树 — 比如NodeList对象和HTMLCollection对象;如果是“非实时的”,那么这些操作只在DOM节点的一个快照上进行。
  • 受信事件: 如果一个事件对象的isTrusted属性为true,则称其为“受信事件”。

基本规则

  • 对于有违HTML标准规则的文档,浏览器亦当按照标准所定义的处理规则来进行操作,不能随心所欲地进行解析处理。
  • 评判好的HTML文档的标准:结构清晰、语义丰富、载体无关
  • DOM并不仅仅只是一套API,浏览器对HTML的内部实现标准是通过描述DOM操作来定义的。
  • 如果浏览器需要实现非标准的自定义标签属性,则该新属性需遵循以下命名规则:x-vendor-feature,其中vendor是厂商名称的缩写。标准规定所有以x-开头,或包含下划线的属性名都将保留给浏览器做自定义使用,这些属性将永远不会加入到标准文档中。受此影响,在写AngularJS的自定义directive时,应避免使用这种以x-开头,或者包含下划线的属性名。
  • 如无特殊指定,标准中的字符串比较是以大小写敏感的方式进行的。
  • 布尔属性。类似于input标签中的checked属性与disabled属性称之为“布尔属性”。当一个元素中出现布尔属性名时,该属性值必须为以下三种情况之一,此时元素的该布尔属性值为真:

    1. 与属性名一致(大小写不敏感)
    2. 空字符串
    3. 属性值缺失

    当一个元素中未出现某布尔属性名时,元素的该布尔属性值为假。需要注意的是:true和false并不是设定布尔属性值的合法选择。以下面的代码为例,以下4种做法均将checked属性设置为真:

<input type=checkbox checked>  
<input type=checkbox checked="">  
<input type=checkbox checked="checked">

<!-- 与第三种方法实质相同 -->  
<input type=checkbox checked=checked>  
  • dataset字段。如果一个元素拥有data-*属性,则在DOM中该元素的dataset字段会指向一个DOMStringMap对象以存储这些data-*值。比如:
<div id="a" data-x="42"></div>

function() {  
  // 42
  console.log(document.getElementById('a').dataset.x);
}

值得一提的是,对dataset字段的访问会将-分隔的变量转换为驼峰表示法。如,HTML中属性为data-foo-bar的元素,获取该属性值的代码为dataset.fooBar。

Chuan Shao

Read more posts by this author.

Shanghai

Subscribe to Chuan's blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!