HTML5

From HTML5 Chinese Interest Group Wiki
Jump to: navigation, search

(暂放) 原文链接 http://www.w3.org/TR/2011/WD-html5-20110525/

本文档开放给所有人编辑,希望参与贡献请移步下面地址注册: http://www.w3.org/Help/Account/Request/Public

Contents

介绍

本章节已移至相应子页面

背景

   HTML是万维网(World Wide Web)的核心标记语言。最初,HTML主要被设计用来描述科学语义。然而,由于它的普适性的设计,使其随后的几年中可以用来描述大量其他类型的文档甚至是应用。
   在web应用领域,HTML一直没有充分得到利用。本文档试图解决此问题,同时更新HTML文档以解决近几年出现的问题。

对象

   这份规范的目标读者有:本规范中特性的定义者、基于本规范的页面工具实现者以及对文档或具体实现校验是否符合本规范的验证者。
   这个文档可能不会为了那些对web技术没有什么基础的读者而牺牲他的精确和完整。如需更加优雅的入门介绍可以寻找其他更加平易近人的教程或指南。
   此外,拥有DOM的基础知识对于完整的理解本规范中的一些技术部分是有必要的。对Web IDL, HTTP, XML, Unicode, character encodings, JavaScript以及CSS的了解虽不必须但是将非常有帮助。

范围

  本规范仅限于提供编写用户体验良好的,静态或动态的,语义化的标记语言和相关脚本API的指导。
  本规范的范围不包括提供特定媒介自定义渲染机制方面的指导(尽管规范末尾包含有默认的浏览器渲染机制,且作为web语言一部分的CSS也提供了相关的机制)。
  本规范并不会描述整个系统是如何运作的。尤其是硬件如何配置软件,图形操作工具和高端工作站日常用到的软件都不在本规范范围内。软件方面,本规范主要介绍一些低CPU要求的特定场景下使用的基础软件。比如,在线交易系统,搜索系统,游戏(尤其多人在线游戏),公众电话本或者地址簿,社交软件(邮件客户端,即使通讯客户端,会议软件),规范编辑软件等。

历史

   起初的5年(1990-1995),HTML经历了多次的修改和扩充内容,首先是由CERN负责,其次是IETF。
   W3C诞生后,HTML的发展再度发生变化。1995年,首次尝试扩充HTML内容失败,即HTML3.0。1997年HTML3.2完成。同年HTML4也完成。
   之后的几年,W3C成员决定停止HTML的研发,取而代之的开始研发基于XML的XHTML。以重制HTML4为XHTML1.0开始,没有增加新特性,except the new serialization,直到2000年才结束。XHTML1.0之后,W3C的工作重心转移到,使其他工作组更便于在XHTML的模块下扩展它上。与此同时,W3C还在开发一款新语言,即不兼容之前的HTML和XHTML的XHTML2。
   大约在1998年,HTML的改革停止的时候,浏览器厂商们开发出了HTML的部分API,并以DOM Level 1(1998年)、DOM Level 2 Core和DOM Level 2 HTML(从2000年到2003年)的命名发布。这些成果随着DOM Level 3规范在2004年发布的同时而逐渐被淡化,但是在Level 3草案完成前,其工作组就被迫关闭。
   在2003年,被认为是下一代web技术产物的XForms发布,它重新引起了开发人员们扩展HTML的兴趣,而不是寻找HTML的替代品。这份兴趣也使得开发人员们认识到作为web技术的XML受限于新的技术(如RSS和后来的Atom),而不是替代了当前的技术(如HTML)。
   重新引起兴趣后,开发人员们首先扩展了HTML4以提供更多在Xforms中介绍的特性,而不需要浏览器启动与当前HTML web页面不兼容的渲染引擎。在此之前,草案已公之于众和代码也已实装的时候,这份规范的版权归Opera软件公司所有。
   2004年,HTML的改进被重新提起,并在W3C下的一个工作室测试。一些HTML5标准下的机制和早前提及的与form相关的草案提议被Mozilla和Opera联合提交给了W3C。提议因为与之前选定的web发展方向相冲突而被拒绝。取而代之的是,W3C的工作人员和会员们投票决定继续开发以XML为基础的技术作为替代。
   不久之后,Apple,Mozilla和Opera联名宣布它们组建WHATWG组织以继续HTML5的开发工作。一个公众邮件列表被建立,同时,草案也被移到了WHATWG的网站上。版权被修订为三方共同所有且可复用该规范。
   WHATWG制定了几个主要原则,科技需要向后兼容、即便在要改动规范而不是实例的情况下,规范和实例也需要保持一致、规范需要描述的足够清楚以至于实例可以完全达成交互而不用对调引擎。
   后来急需确定HTML5规范的范围,包括之前在HTML4,XHTML1和DOM2 HTML中明确了的内容。这意味着HTML5包含了更多的内容。
   2006年,W3C终于表明了对HTML5开发的兴趣,并在2007年成立了工作组特许与WHATWG就HTML5规范的制定而协同工作。Apple,Mozilla和Opera准许了W3C以W3C的版权发布HTML5规范,同时保持一个低限制证书的版本在WHATWG的网站上。
   许多年后,W3C和WHATWG的HTML5工作组都在Ian Hickson的带领下工作。2011年,这两个小组得出一个结论,彼此的目标不同:W3C想制定一个HTML5特性的绝对建议标准,而WHATWG想要一个不断迭代的HTML5,持续不断地维护规范和增加特性。在2012年中,W3C成立了一个新的编辑队伍来编辑HTML5规范和为下一代HTML准备工作草案。
  自那以后,W3C HTML的工作组一直在通过cherry picking的方式从WHATWG获取补丁,来修补在W3C HTML规范中或者确实存在问题的UA上的BUG。在此文发布的时候,WHATWG HTML规范已经合并补丁到8152版本了。W3C HTML编辑们从W3C HTML小组的讨论和决定中和未被WHATWG共享的bug fixes中获取补丁并修补。

设计备注

   不得不承认,HTML在许多方面给人的第一印象是荒谬的和矛盾的。

和HTML支持的其他技术一样,HTML 支持的DOM API都被擅长它们领域的人员开发了好几十年,而且他们彼此并不知道其他人的存在。

   不同的源码中有着相同的呈现,而它们并没有使用相同的方式去编码。此外,因为Web的独特性,事实上,总是存在bug,因为在修复bug前,内容常常不是按标准描述的那样编写。
   尽管如此,我们还是努力以达成某些设计目标。以下子节是相关描述。

脚本执行的序列性

   为了避免数据泄露,HTML和DOM API被设计为,脚本不可探测到其他脚本的同时执行行为。即便通过workers,如此设计的目的是确保所有脚本在浏览器上下文中是单线程执行的。
   注意:在此模型中,navigator.yieldForStorageUpdates()方法在当前脚本被阻塞的情况下,允许其他脚本执行。

遵从其它规范

   本规范影响或依赖于许多其他规范。在这种情况下,本规范违法其他规范的相关要求,以解决内容冲突。每个冲突的地方,都会被标注为“强制违反”,并标明违反原因。

HTML vs XHTML

这份规范的结构

如何阅读本文档

排版惯例

HTML 的简单介绍

对于作者的符合规范

对象标记

语法错误

内容模型与属性值限制

推荐阅读

通用设施

本章节到 2.4 为止已移至相应子页面

术语

资源

XML

DOM树

脚本

插件

字符编码

規範要求

規範類別

依賴關係

擴展性

字串比較與大小寫

UTF-8

通用微語法

本章节已移至相应子页面

常用解析器慣用語

布尔型属性

关键字和枚举类型属性

数字

非负整数
带符号整数
实数
百分比和长度
整数列表
尺寸列表

日期和时间

下述算法中,年year中如下月份month的日期数至31:1、3、5、7、8、10以及12月;如下月份的日期数至30:4,6,9以及11月;当月份是2月,且年份数能被400整除,或者能被4整除但不能被100整除时,日期数至29;否则只至28。此据公历年中的闰年概念。

月份
日期
时间
本地日期和时间
全球日期和时间
星期
Vaguer moments in time

颜色

空格分开的token

逗号分开的token

参考

媒体查询

URL

本章节已移至相应子页面

术语

分析URL

Resolving URLs

URL运用与创建

动态改变基础URL

URL运用的接口

获取资源

本章节已移至相应子页面

协议的概念

加密的HTTP及安全考量

決定資源的類型

通用DOM接口

本章节已移至相应子页面

在IDL属性中反射内容属性

集合

HTMLCollection
HTMLAllCollection
HTMLFormControlsCollection
HTMLOptionsCollection

DOMTokenList

DOMSettableTokenList

安全地传递结构体类型数据

DOMStringMap

DOM特征字符串

异常

垃圾回收

命名空间

本章节已移至相应子页面

HTML文档的语义、结构及API

本章节到 3.1 为止已移至相应子页面'

文档

DOM中的文档

安全

资源元数据管理

DOM树存取器

创建文档

加载XML文档

元素

本章节已移至相应子页面

语义

DOM中的元素

全局属性

id属性
title属性
lang和xml:lang属性
xml:base属性
dir属性
class属性
style属性
用data-*属性嵌入自定义的不可见数据

元素定义

属性

内容模型

内容种类
元数据式内容
流式内容
章节式内容
标题式内容
段落式内容
嵌入式内容
交互式内容
透明内容模型
段落

关于双向文字处理算法的需求

WAI-ARIA(Accessible Rich Internet Applications)无障碍的富因特网应用程序

HTML文档中的API

本章节已移至相应子页面

与XPath和XSLT交互

动态注入标记

本章节已移至相应子页面

打开输入流

关闭输入流

document.write()

document.writeln()

innerHTML

outerHTML

HTML元素

本章节到 4.2 为止已移至相应子页面

根元素

html元素

文档元数据

head元素

title元素

base元素

link元素

meta元素

style元素

样式

脚本

本章节已移至相应子页面

script元素

脚本语言
script元素内容的限制
外部脚本的内联文档
script元素和XSLT的交互

noscript元素

区块

本章节已移至相应子页面

body元素

section元素

nav元素

article元素

aside元素

h1,h2,h3,h4,h5h6元素

hgroup元素

header元素

footer元素

address元素

头和区块

内容分组

本章节已移至相应子页面

p元素

hr元素

pre元素

blockquote元素

ol元素

ul元素

li元素

dl元素

dt元素

dd元素

figure元素

figcaption元素

div元素

文本级语意

本章节已移至相应子页面

a元素

em元素

strong元素

small元素

s元素

cite元素

q元素

dfn元素

abbr元素

time元素

code元素

var元素

samp元素

kbd元素

subsup元素

i元素

b元素

u元素

mark元素

ruby元素

rt元素

rp元素

bdi元素

bdo元素

span元素

br元素

wbr元素

使用方式小结

更改记录

本章节已移至相应子页面

ins元素

del元素

insdel元素的通用属性

更改记录与段落

更改记录与列表

嵌入内容

img元素

本章节已移至相应子页面

iframe元素

本章节已移至相应子页面

embed元素

本章节已移至相应子页面

object元素

本章节已移至相应子页面

param元素

本章节已移至相应子页面

video元素

audio元素

source元素

track元素

多媒体元素

canvas元素

本章节已移至相应子页面

颜色空间和颜色校正
canvas元素安全性

map元素

area元素

图像映射

MathML

SVG

尺寸属性

表格数据

本章节已移至相应子页面

table元素

描述表格的技术
布局表格的技术

caption元素

colgroup元素

col元素

tbody元素

thead元素

tfoot元素

tr元素

td元素

th元素

tdth元素的通用属性

处理模型

创建一个表格
创建数据单元格与标题单元格之间的关系

示例

表单

本章节到 4.10.6 为止已移至相应子页面

介紹

编写用户界面
实现一个表单的服务器端过程
配置表单使其与服务器端相通
客户端表单验证

分類

form元素

fieldset元素

legend元素

label元素

input元素

本章节已移至相应子页面

type属性的状态

本章节已移至相应子页面1子页面2

隐藏状态
文本状态和搜索状态
电话号码状态
URL状态
电子邮件状态
密码状态
日期和时间状态
日期状态
月份状态
周状态
时间状态
本地日期和时间状态
数字状态
范围状态
颜色状态
复选框状态
单选按钮状态
文件上传状态
提交按钮状态
图片按钮状态
重置按钮状态
按钮状态
input 元素的共通屬性

本章节已移至相应子页面

input 元素的共通 API

本章节已移至相应子页面

共通事件行為

本章节已移至相应子页面

button元素

select元素

datalist元素

optgroup元素

option元素

textarea元素

keygen元素

output元素

progress元素

meter元素

控制項與表單的連結

本章节已移至相应子页面

表單控制項的共通屬性

本章节已移至相应子页面

為表單控制項命名
啟用和停用控制項
控制項的取值
控制項的自動聚焦
限制使用者的輸入長度
表單提交
提交元素方向性

文本字段选择API

本章节已移至相应子页面

约束

本章节已移至相应子页面

定义
约束验证
约束验证API
安全性

表單提交

本章节已移至相应子页面

介绍
隱式提交
表单提交算法
构建表单数据集
URL编码表单数据
多部分表单数据
纯文本表单数据

表單重置

本章节已移至相应子页面

交互元素

details元素

summary元素

command元素

menu元素

链接

本章节已移至相应子页面

介绍

aarea元素创建的链接

跳转至超链接

链接类型

没有特指元素的惯用语

用选择器匹配HTML元素

本章节已移至相应子页面

网页加载过程

本章节到 5.2 为止已移至相应子页面

浏览上下文

嵌套的浏览上下文

导航在 DOM 中嵌套的浏览上下文

辅助浏览上下文

在DOM中导航辅助浏览上下文

次级浏览上下文

安全性

浏览上下文分组

浏览上下文名称

浏览上下文可以有一个浏览上下文名称。默认情况下,浏览上下文没有名称(即未设置名称)。

一个合法的浏览上下文名称可以是任意字符串,该字符串由至少一个字符组成,且不能以U+005F下划线字符开始。(以下划线开始的名称是保留关键字)。

一个合法的浏览上下文名称或关键字可以是一个合法的浏览上下文名称大小写不敏感的以下字符串之一:_blank_self_parent_top

浏览上下文名称的值根据当前页面是否在沙箱环境中有着不同的意义,如下表(非正式)所述。在此表格中,“当前”表示链接或脚本所在的浏览上下文,“父级”表示链接或脚本所在的浏览上下文的父级浏览上下文,“主级”表示当链接或脚本在一个无缝的iframe中时,使用其所在的浏览上下文最近的祖先级浏览上下文,“顶级”表示链接或脚本所在的浏览上下文对应的顶级浏览上下文,“新建”表示需要创建一个新的顶级浏览上下文辅助浏览上下文,根据不同的用户配置以及用户代理的策略,“可能新建”表示采用“新建”的策略,但鼓励用户代理视其为“无”,意味着不采取任何动作。


关键字 原始效果 iframe中时...
seamless="" sandbox="" sandbox=""
seamless=""
sandbox="allow-top-navigation" sandbox="allow-top-navigation"
seamless=""
未指定,当用于链接及表单提交时 当前 主级 当前 主级 当前 主级
未指定,当用于window.open() 新建 新建 可能新建* 可能新建* 可能新建* 可能新建*
空字符串 当前 主级 当前 主级 当前 主级
_blank 新建 新建 可能新建 可能新建 可能新建 可能新建
_self 当前 当前 当前 当前 当前 当前
_parent,如果没有父级浏览上下文 当前 当前 当前 当前 当前 当前
_parent,如果父级浏览上下文是顶级浏览上下文 父级/顶级 父级/顶级 父级/顶级 父级/顶级
_parent,如果有父级浏览上下文且其不是顶级浏览上下文 父级 父级
_top,如果当前浏览上下文是顶级浏览上下文 顶级 顶级 顶级 顶级 顶级 顶级
_top,如果当前浏览上下文不是顶级浏览上下文 顶级 顶级 顶级 顶级
不存在的名称 新建 新建 可能新建 可能新建 可能新建 可能新建
存在该名称且为子级浏览上下文 指定的子级 指定的子级 指定的子级 指定的子级 指定的子级 指定的子级
存在该名称且为当前浏览上下文 当前 当前 当前 当前 当前 当前
存在该名称且是父级浏览上下文,同时是顶级浏览上下文 指定的父级 指定的父级 指定的父级/顶级 指定的父级/顶级
存在该名称且是父级浏览上下文,但不是顶级浏览上下文 指定的父级 指定的父级
  • 该情况仅在sandbox属性同时允许脚本交互时出现。

当一个算法所在的任务满足以下条件时,可以打开一个弹出窗:

根据给定的浏览上下文名称选择浏览上下文的规则如下所述,该规则假定其在一个浏览上下文中使用:

  1. 如果给定的浏览上下文名称是空字符串或_self,则必须使用当前的浏览上下文。
    如果给定的浏览上下文名称是_self,则被认为是显式自导航覆盖,这将覆盖iframe元素上由seamless属性设置的无缝浏览上下文标记指定的行为。
  2. 如果给定的浏览上下文名称是_parent,则必须使用当前浏览上下文的父级浏览上下文,除非不存在父级浏览上下文,这种情况下则必须使用当前浏览上下文。
  3. 如果给定的浏览上下文名称是_top,则必须使用当前浏览上下文关联的顶级浏览上下文,如果不存在则必须使用当前浏览上下文。
  4. 如果给定的浏览上下文名称不是_blank,且存在一个浏览上下文的名称与给定的相同,同时当前浏览上下文可以控制该浏览上下文的导航,且用户代理判定这两个浏览上下文相关度足以发生交互,则必须使用指定的浏览上下文。如果有多个符合条件的浏览上下文,用户代理需要根据任意一致的方法选择其一,如最近打开的,最频繁获得焦点的,或者更加具有相关度的。
    如果这一步选择的结果是当前浏览上下文,则同样被认为是显式自导航覆盖
  5. 其他情况下,需要请求一个新的浏览上下文,这将根据用户代理的配置及功能产生不同的效果 -- 根据下表选择第一个可接受的规则:
    1. 如果当前浏览上下文的活动文档创建时,设置了沙箱内的导航浏览上下文标记
      用户代理可以提供一个新的顶级浏览上下文或重用一个已经存在的顶级浏览上下文。如果用户设置了这些选项,则必须使用指定的浏览上下文(不需要该浏览上下文的名称为给定的值)。默认行为(用户代理未提供给用户相关的选项,或用户拒绝使用浏览上下文)下,不得选择任何浏览上下文。
    2. 如果用户代理根据配置判定需要创建一个新的浏览上下文,且该浏览上下文是作为跟进超链接行为的的一部分而被创建的,同时该超链接的链接类型包含了noreferrer关键字
      必须创建一个新的顶级浏览上下文。如果给定的浏览上下文名称不是_blank,则新建的顶级浏览上下文的名称必须为给定的值(否则该浏览上下文不设置名称)。最终选择的浏览上下文必须是此新建的浏览上下文。
      注意:如果需要立刻导航,则导航会在可替换的状态下进行。
    3. 如果用户代理根据配置判定需要创建一个新的浏览上下文,且该浏览上下文是作为跟进超链接行为的的一部分而被创建的,但该超链接的链接类型不包含noreferrer关键字
      必须创建一个新的辅助浏览上下文,设置其开启方浏览上下文为当前浏览上下文。如果给定的浏览上下文名称不是_blank,则新建的辅助浏览上下文的名称必须为给定的值(否则该浏览上下文不设置名称)。最终选择的浏览上下文必须是此新建的浏览上下文。
      注意:如果需要立刻导航,则导航会在可替换的状态下进行。
    4. 如果用户代理根据配置判定需要重用当前的浏览上下文
      最终选择的浏览上下文就是当前的浏览上下文。
    5. 如果用户代理根据配置判定不需要查找对应的浏览上下文
      没有被选择的浏览上下文。

推荐用户代理实现者为用户提供相关的配置项,用以保证总是重用当前的浏览上下文。

Window对象

安全性

创建和按浏览上下文名称导航的API

访问其他浏览上下文

访问命名窗口对象

垃圾收集和浏览上下文

浏览器界面元素

WindowProxy对象

源和真源是非透明的标识符,由一个访问协议,一个主机名,一个端口组成.(真源是指document.domain的值)

注意:网站使用加密连接时会额外包含证书,确保网站证书修改后它的源也被修改.

这些特性定义如下:

URL

URL的源与真源是根据 The Web Origin Concept进行定义的.

脚本

脚本的源与真源是根据下面这些条件进行定义的:

Document对象
图片
audio和video元素
字体

放宽同源限制

会话历史和导航

本章节已移至相应子页面

浏览上下文的会话历史

History接口

Location 接口

安全性

会话历史实现说明

浏览网页

本章节已移至相应子页面

在文档之间导航

页面加载HTML文件的处理模型

页面加载XML文件的处理模型

页面加载文本文件的处理模型

页面加载图像的处理模型

页面加载使用插件内容的处理模型

页面加载没有DOM的内联内容的处理模型

导航到一个片段标识符

穿越历史

事件定义

卸载文档

事件定义

中止文档加载

离线Web应用程序

本章节已移至相应子页面

简介

事件摘要

应用程序缓存

缓存清单语法

Manifest清单示例
写缓存清单
解析缓存清单

下载或更新应用程序缓存

应用程序缓存的选择算法

更改的网络模式

过期的应用程序缓存

磁盘空间

应用程序缓存API

浏览器状态

Web应用程序API

脚本功能

介绍

启用和禁用脚本功能

处理模型

定义
调用脚本
创建脚本

当规范涉及需要创建一个脚本,并给定脚本源、脚本的URL、脚本的语言、全局对象、浏览上下文、URL编码以及根URL时,用户代理必须按以下步骤进行处理:

  1. 如果传递给该算法的浏览上下文禁用了脚本,则中断以下步骤,其表现如果脚本没有执行任何内容并返回void。
  2. 根据指定的脚本语言,创建一个合适的脚本执行环境。
  3. 使用该脚本执行环境,根据指定的脚本语言,对脚本源进行解析/编译/初始化操作,以此得到该脚本的一系列代码入口。如果指定的脚本语言与脚本源要求某些代码需要被立即执行,则将该代码的入口作为初始代码入口。
  4. 按照传递给该算法的配置项,设定脚本的全局对象、浏览上下文、文档对象、URL编码以及根URL。
  5. 如果以上步骤均成功执行(即脚本成功完成编译),则跳转到脚本的初始代码入口。反之,将脚本源URL、出现问题的行号作为错误信息,在script origin中,触发该脚本的全局对象的onerror事件处理函数。如果在此过程中错误并没有得到处理,则可以向用户报告该错误。

如果用户代理需要通过指定的脚本源、脚本URL、脚本语言、浏览上下文创建一个无效的脚本,则用户代理必须创建一个脚本,该脚本使用指定的脚本源、脚本URL、脚本语言,使用一个空对象作为其全局对象,并使用指定的浏览上下文。由于该脚本并不对外暴露任何API,因此URL编码和根URL并不重要。

当标准涉及需要从一个<script>节点创建脚本,并给定脚本源、脚本的URL、脚本语言时,用户代理必须使用给定的脚本源、脚本URL和脚本语言,并使用从节点中提取的设置来创建一个脚本。

从节点中提取设置的计算过程如下:

  1. 使用节点的Document对象(当节点为Document时则使用自身)作为脚本的document属性。
  2. 使用当前文档的浏览上下文作为浏览上下文。
  3. 使用当前文档的Window对象作为全局对象。
  4. 使用当前文档的编码作为URL编码(此处为引用关系,不作复制处理)。
  5. 使用当前文档的根URL作为根URL(此处为引用关系,不作复制处理)。
结束脚本
运行时脚本错误

事件循环

定义
处理模型
通用任务来源

“javascript: ”URL协议

事件

事件处理

许多对象可以指定事件处理行为。这些行为将成为指定它们的对象的冒泡事件侦听器。

一个事件处理行为可以被设为null值或一个Function对象。在初始化时,事件处理行为必须被设为null。

事件处理行为通过一到两种途径暴露。

第一种途径是一个事件处理行为IDL属性,它是所有事件处理行为所共有的。

第二种途径是一个事件处理行为内容属性。HTML元素的事件处理行为和某些Window对象的事件处理行为通过该途径暴露。

事件处理行为IDL属性,在设置其值时,必须以相应的事件处理行为作为其新值;在获取其值时,必须返回任何相应的事件处理行为的当前值(可能为null)。

如果一个事件处理行为IDL属性公开一个不存在的对象的事件处理行为,则必须总是在获取其值是返回null,且在设置其值时不做操作。

注:这种情况可能发生在特定的没有相应的window对象的body元素的事件处理行为IDL属性上。
注:某些事件处理行为IDL属性拥有额外的需求,例如MessagePort对象的onmessage属性。

事件处理行为内容属性,当其被指定时,则必须包含有效地JavaScript代码;当其被解析时,将会匹配在自动插入分号后生成的FunctionBody。

当一个事件处理行为内容属性被设置时,如果该元素被浏览器上下文中的Document所拥有,并且脚本程序在浏览器上下文中被启用,则用户代理必须执行下列步骤以便在设置内容属性为新值后生成一个脚本程序:

  1. 设置一个相应的事件处理行为为null。
  2. 创建一个JavaScript脚本执行环境。
  3. 将事件处理行为内容属性的新值设为body
  4. 如果body不能作为FunctionBody解析,或者解析检测到一个早期错误,则步骤终止。
    注:FunctionBody定义在ECMAScript第5版第13节“方法定义”。早期错误定义在ECMAScript第5版第16节“错误”。
  5. 如果body以一个包含了使用严格指令的指令开端作为开始,则strict为真,否则strict为假。
    注:“使用严格指令”和“指令开端”条款定义在ECMAScript第5版第14.1节“指令开端及使用严格指令”。
  6. 使用之前创建的脚本制定环境创建一个function对象(定义在ECMAScript第5版第13.2节“创建Function对象”):
    参数列表FormalParameterList ;如果属性是window对象的onerror属性 : 方法拥有三个参数,分别名为event、source和fileno。;否则 : 方法用户一个单一参数,名为event。
  7. 创建脚本的全局对象。
元素、Document和Window对象的事件处理

以下内容已移至子页面

事件触发
事件和Window对象

Base64实用方法

定时器

本章节移至相应子页面

用户提示

本章节移至相应子页面

简单对话框

打印

使用独立文档实现的对话框

系统状态及性能

本章节移至相应子页面

Navigator对象

客户端标识
自定义协议和内容处理
安全和隐私
用户界面示例
手动释放存储互斥量

External接口

用户交互

本章节到 7.5.3 为止已移至相应子页面

hidden属性

啟動

焦距

設定鍵盤快捷鍵

編輯

使文档区域可编辑:contenteditable内容属性

使整个文档可编辑:designMode IDL属性

页面内编辑器的最佳实践

编辑API

本章节到 7.5.5 为止已移至相应子页面

拼写及语法检查

拖曳

本章节到 7.7 为止已移至相应子页面

文字搜尋 API

HTML 语法

本章节到 8.1 为止已移至相应子页面

编写 HTML 文档

DOCTYPE 声明

元素

开始标签
结束标签
属性
可选标签
内容模型限制
原始文本与 RCDATA 元素内容限制

文本

换行

字符引用

CDATA 段落

注释

解析 HTML 文档

本章节到 8.2.3 为止已移至相应子页面

解析模型概述

輸入串流

決定字符編碼
字符编码
輸入串流的前置處理
解析時的編碼變更

解析态

插入模式
开元素栈
活动格式元素列表
元素指针
其他解析态标记

Tokenization

本章节已移至相应子页面

树构建

创建与插入元素
闭合缺结束标签的元素
Foster parenting
解析 HTML 內容內的 token 的規則
插入模式:「IN HEAD」
標籤名是 "meta" 的開始標籤

若元素有 charset 屬性,且取值為使用者代理支援的 ASCII 兼容的字符編碼或一個 UTF-16 編碼且可信度目前為「暫時」,則變更編碼charset 屬性取值對應的編碼。

否則,若元素有 http-equiv 屬性且其取值 ASCII 不分大小寫批配 "Content-Type" 字串,且有 content 屬性,且對屬性的取值使用meta 元素萃取編碼的演算法可以得到使用者代理支援的 ASCII 兼容的字符編碼或一個 UTF-16 編碼且可信度目前為「暫時」,則變更編碼成萃取出來的編碼。

解析外语内容区域的规则

结束

强制 HTML DOM 转为信息集

错误处理与解析器奇怪情况简介

标签嵌套错误:<b><i></b></i>
标签嵌套错误:<b><p></b></p>
Unexpected markup in tables
在解析页面时修改页面的脚本
The execution of scripts that are moving across multiple documents
Unclosed formatting elements

序列化 HTML 区段

解析 HTML 区段

命名字符参考

XHTML语法

渲染

本章节已移至相应子页面

介紹

CSS 使用者代理樣式表與表象呈現提示

介紹

显示状态

边距与边框

对齐

字体与颜色

标点符号与装饰

继承属性的覆盖规则

hr 元素

fieldset 元素

置换元素

綁定

框架与框架集

互动媒介

印刷媒介

废弃的特性

本章节已移至相应子页面

废弃但符合规范的特性

对废弃但符合规范的特性进行警告

非标准特性

实施需求

applet元素

marquee元素

Frames

其他元素,属性和API

IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)考量

索引

参考文献

本章节已移至相应子页面

致谢

感谢Tim Berners-Lee发明了HTML,没有他的贡献所有这一切都不会存在。