本文選譯自:W3C Working Group Note: HTML5 Differences from HTML4。
解釋一下W3C Working Group Note,作爲“工作組筆記” 發佈,意味着它是一個草稿版文檔,可能被其它文檔更新、替換或廢棄。但由於翻譯時草稿只發布了不到二十天,本文有很好的時效性。也作爲比較性質的文獻,比起HTML5的標準它更容易理解,可以讓人快速地理解HTML5的變化輪廓。
關於本翻譯:
- 原文所有指涉HTML5的地方用的要麼是無定語的"HTML",要麼是“新的HTML”,爲了避免和HTML4的混淆,均寫作HTML5;
- 由於缺乏一目瞭然的譯名,原文中的User Agent統一簡寫爲UA;
- 由於原文的章節劃分非常合理,第五節的屬性均爲Property,此外其它的章節均是Attribute,因此本文不在翻譯上區分它們,均譯作“屬性”;
- Application統一簡寫爲App;
- 爲避免混淆,第四節即文檔模型章節部分,分類名均保留英文名不翻譯。
- 第五節中IDL(Interface Definition Language)相關內容由於沒有標準翻譯,概念legacy caller、 Stringifiers、 setter、getter、creator、deleter等均保留原文
1. 簡介
1.1. 文檔範圍
本文檔覆蓋W3C的HTML5標準,它不包含W3C HTML5.1標準或WHATWG HTML標準。
1.4. 向後兼容
HTML5是這樣被定義的:能向後兼容目前UA處理內容的方式。爲了讓語言更簡單,一些老的元素和Attribute被捨棄。比如一些純粹用於展現的元素(譯註:即非語義化的元素,如big
)或Attribute被捨棄,因爲他們更適合用CSS來處理。
但UA依然可以支持老舊的屬性和元素。這就是爲什麼HTML5標準清楚地劃分了給開發的要求和給UA的要求。比如,開發者不應當使用plaintext
元素,但UA需要兼容plaintext
元素。
既然HTML5已區分對UA和對開發者的要求,再也不需將一些特性標記爲deprecated(不贊成使用)了。
2. 語法
HTML5定義了HTML5語法,日前已廣泛兼容於網絡上HTML4和XHTML1的文檔,但不兼容大部分HTML4中的深奧SGML特性,大部分UA都不支持它們,比如處理指令 (processing instructions) 和標籤簡寫 (shorthand markup)。
HTML5語法中同時定義瞭解析規則——包括異常的處理方式。這種解析規則能夠廣泛支持HTML4領域的實現,UA可以使用這些規則來解析媒體類型爲text/html
的資源。
下面是一個能夠說明HTML語法的示例文檔:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>
另外一個可以被用於HTML的語法是XML。XML語法可兼容於XHTML文檔或實現。使用XML語法的文檔需要配套XML文檔的媒體類型如application/xhtml+xml
或application/xml
來使用,同時,元素需要遵循XML規則,被放到http://www.w3.org/1999/xhtml
命名空間中:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>
2.1 符號編碼
HTML標準中要求開發聲明編碼方式,有這些方式可以做到:
- 傳輸層,可以用HTTP頭部的
Content-Type
- 在文檔頭部放置對應使用的編碼的BOM
- 使用有charset的meta元素
比如<meta charset="UTF-8">
可以用於聲明UTF-8編碼。這個新聲明替代了<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
,儘管後者依然可以使用。
XML語法中,開發需要按照XML標準來設置編碼。
2.2 Doctype
HTML5語法要求聲明Doctype,以確保瀏覽器以標準模式渲染頁面。Doctype沒有其他用途。
HTML5語法中的Doctype聲明爲<!DOCTYPE html>
,不區分大小寫。
之前HTML4標準中的Doctype更長,因爲HTML4語法是基於SGML的,需要引用DTD。而在新的HTML5標準中,再也不需要引用DTD了(譯註:因爲HTML5不再基於SGML)。因此,doctype只是爲了確保文檔以標準模式渲染。
爲了支持舊有的標籤,可以使用<!DOCTYPE html SYSTEM "about:legacy-compat">
作爲Doctype聲明。
HTML4.0、HTML 4.01、XHTML 1.0、XHTML 1.1之類嚴格的Doctype,在HTML5中可以使用,但不被提倡。
在XML語法中,可以使用任何Doctype聲明或省略Doctype。使用XML媒體類型的文檔永遠會在標準模式中被解析。
2.3 MathML和SVG
HTML語法允許文檔內嵌MathML和SVG元素。
math
和svg
的開始標籤將會導致HTML解析器轉爲特殊的插入模式,以將元素和屬性放入合適的命名空間,並轉化大小寫,並支持XML中的空元素語法- HTML中的math/svg的相關元素及其屬性依然是區分大小寫的
- 可以省略namespace(譯註:如svg的namespace可以省略
xmlns="http://www.w3.org/2000/svg"
) - 在這個特殊的插入模式裏,可以使用CDATA語法
- 一些MathML和SVG元素可能導致解析器轉回HTML解析模式,比如
mtext
和foreignObject
,在這些元素內部你可以使用HTML元素或者新的math
/svg
元素。
一個使用了svg功能的例子如下:
<!doctype html>
<title>SVG in text/html</title>
<p>
A green circle:
<svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg>
</p>
2.4 其它方面
- 字符實體
⟨
和⟩
分別代表U+27E8
和U+27E9
(數學意義上的左右尖括號?、?),而非U+2329
和U+232A
(尖括號的舊有表示方法?、 ?)。(譯註,見維基百科的說明) - 一些新的字符實體被加入,包括在MathML中定義的全部字符實體
- 空元素(如
br
)允許有一個結尾反斜槓(trailing slash) - 相較於HTML4,HTML5中的
&
在更多場景下不轉義 - 屬性需要起碼一個空格字符來區隔開
- 有空值的屬性等價於屬性與值完全相同的情形(譯註:比如
<input autofocus>
就相當於<input autofocus="autofocus">
),即使這個屬性並非boolean屬性 - 相較於HTML4,HTML5中省略了引號的屬性值允許使用更大範圍的字符集
- HTML解析器不再對屬性值中間出現的空格進行標準化,比如
<input id=" a ">
中的id不再有效,同時<input value="">
中的value中的空行字符可以被使用,而不需要使用實體來替代 optgroup
結束標籤可選填colgroup
開始標籤可選填,HTML解析器會根據上下文補完
3. 語言
3.1 新標籤
以下標籤的引入是爲了用於更好的文檔結構:
section
代表一般意義上的文檔/app區塊,它應當與h1
~h6
等元素搭配使用,以標示文檔層級article
代表了獨立於文檔的一塊內容,比如blog入口或報刊文章main
代表了文檔/app的主體內容aside
代表了一些與頁面其它部分關聯性不那麼大的內容header
代表了一組介紹性或導航性質的輔助內容footer
代表了一個區塊的底部,可以包含作者、版權等信息nav
代表了文檔中可以導航的區塊figure
代表了代表了一個獨立的內容流figcaption
可以用作內容流的標題template
可以用於聲明一塊可用於克隆與插入的HTML片段
(譯註:這替代了我們常見的方案textarea
、script type="text/html"
、script type="text/template"
)
其它的新標籤:
audio
和video
代表了多媒體元素,它們也提供了相應的API用於開發者定製UI,同時也提供了觸發UA展示其默認控件的方式。source
元素跟他們一同使用,用於有多類型的內容流的情形track
提供了audio
的即字幕embed
用於插件內容mark
代表了一個文檔中需要標記或高亮的引用部分progress
代表了一個任務的完成程度meter
代表了一個度量,比如對磁盤空間的度量time
代表了時間/日期ruby
、rt
、rp
爲ruby表達式bdi
代表了一段隔絕於周圍元素的雙向書寫文本格式wbr
代表了可能斷行的部分canvas
用於渲染動態位圖datalist
與input
的list
屬性共同使用,可以用於創建下拉選擇框控件
<input list="browsers">
<datalist id="browsers">
<option value="Safari">
<option value="Internet Explorer">
<option value="Opera">
<option value="Firefox">
</datalist>
keygen
代表生成的密鑰對output
代表了一種輸出內容
3.2 新屬性
表單元素:
input
的type
屬性有了更多新值:tel
、search
、url
、email
、date
、time
、number
、range
、color
form
屬性可用於在input
、output
、select
、textarea
、button
、label
、object
、fieldset
元素上指定關聯的<form>
元素的id,不侷限於常規的層疊關係
<table>
<tr>
<th>Key
<th>Value
<th>Action
<tr>
<td><form id=a><input name=a-key></form>
<td><input form=a name=a-value>
<td><button form=a name=a-action value=save>?</button>
<button form=a name=a-action value=delete>?</button>
...
</table>
input
、textarea
元素可使用placeholder
屬性來幫助用戶填寫數據,注意,它不應當替代label元素的作用- 非
type="hidden"
的input
、select
、textarea
、button
可使用autofocus
元素來制定自動獲得焦點的元素 input
、select
、textarea
有新屬性required
,代表了用戶需要填寫該字段,纔可以提交這個表單。select
的第一個元素應當爲沒有值的元素,以作爲空值的佔位符
<label>Color: <select name=color required>
<option value="">Choose one
<option>Red
<option>Green
<option>Blue
</select></label>
fieldset
標籤允許使用disabled
屬性,這將禁止所有子元素的交互;它同時還可以使用name
以方便腳本獲取input
元素有了用於指明輸入限制的屬性autocomplete
,min
,max
,multiple
,pattern
及step
input type="image"
的元素有width
和height
屬性input
與textarea
元素有了dirname
以指明書寫方向(譯註:ltr或rtl)textarea
元素有了新的屬性,如maxlength
、minlength
、wrap
來控制最大輸入長度與提交時的斷行行爲form
元素有了novalidate
屬性來禁止默認的表單驗證行爲input
與button
元素有了formaction
,formenctype
,formmethod
,formnovalidate
與formtarget
屬性,用於覆蓋繼承自form的action
,enctype
,method
,novalidate
及target
屬性input
元素有了minlength
和maxlength
屬性
非表單元素的新屬性:
area
元素同a
和link
元素一樣有了新的hreflang
、type
、rel
屬性base
元素同a
一樣可以有target
屬性meta
元素有了charset
屬性script
元素有了async
屬性將影響腳本的加載與運行html
元素有manifest
屬性,可用於指定緩存行爲link
元素有了新的屬性sizes
,可以指定不同的大小的faviconol
元素有了新的屬性reversed
,它代表着列表的順序是逆序的iframe
元素有了sandbox
和srcdoc
屬性以支持沙盒安全保護object
元素有了typemustmatch
元素以保證更安全的嵌入順序img
元素有crossorigin
屬性以在canvas中支持CORS
HTML4中有一些全部標籤都可以使用的屬性,在HTML5中叫做全局屬性,如:accesskey
, class
,
dir
, id
, lang
, style
, tabindex
及title
。此外,XHTML 1.0僅允許一些標籤上的xml:space
屬性設置。
有這些新的全局屬性:
contenteditable
data-*
代表了開發定製的屬性,這種格式可以避免與將來的新HTML屬性衝突hidden
屬性代表一個元素不再與文檔相關role
及aria-*
用於支持無障礙訪問spellcheck
用於指定內容是否允許進行拼寫檢查translate
用於指定內容是否應當翻譯
3.3 修改的標籤
b
元素現在表示一段加強表示的文本,但並不表達額外的重要性、暗示需要加重的語氣和聲調(譯註:與em
的語義區分開來)。比如文檔摘要裏的關鍵字、產品評價裏的產品名字、可以與之交互的文本等等i
元素現在代表了一段需要使用不同的語氣或聲調的文本,或代表了不同品類的文本,如分類學名稱、科技術語、其他語言中的方言或俚語等等s
元素代表了不再準確/相關的元素small
元素代表了旁註,如免責聲明、注意事項、法律限制或版權聲明strong
元素代表了重要性,而非着重強調u
元素 represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt.(譯註:沒理解這個元素的語義)address
元素的範圍現已由最近的祖先article
/body
元素決定,代表了後者的聯繫信息script
標籤可以被用於自定義數據塊blockquote
元素依然表示從另外一個來源裏摘錄的內容,但現在允許包含footer
或cite
元素dl
元素現在代表了有關聯的命名-值的列表,但不再適用於對話了hr
元素代表了段與段之間的主題意義上的區隔(譯註:即暗示段落主題已經發生了變化)noscript
元素 represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed.(譯註:沒看出來前後有什麼區別)
3.4. 修改的屬性
(譯註:大部分是限制放寬,略)
3.5. 廢棄的元素
開發不應當使用這些廢棄的元素了,但是UA仍應當支持他們。
這些元素被廢棄,因爲他們僅僅是用於展現層面的標籤,他們用CSS處理更好:basefont
、big
、center
、font
、strike
、tt
。
這些元素被廢棄,因爲他們有損可訪問性與可用性:frame
、frameset
、noframes
這些元素被廢棄,因爲他們罕有人使用、有其他元素替代或造成了迷惑:
- 在表示省略語的時候,
acronym
被abbr
取代 applet
被object
取代isindex
元素被表單元素取代dir
被ul
取代
最後,noscript
僅僅可以在HTML語法中被使用,它不被XML語法允許。
因爲需要在視覺上隱藏它內部的內容,同時不允許noscript
內部內容有運行腳本、應用樣式、擁有可以提交的表單、加載資源等行爲,所以noscript
內部的內容將被當作純文本解析。
3.6. 廢棄的屬性
這些屬性被廢棄,你可以在這裏找到你能夠用以替代的屬性或標籤。
a
廢棄屬性:shape
,coords
,rev
,charset
area
廢棄屬性:nohref
form
廢棄屬性:accept
head
廢棄屬性:profile
html
廢棄屬性:version
iframe
廢棄屬性:longdesc
img
廢棄屬性:name
input
廢棄屬性:usemap
link
廢棄屬性:target
,rev
,charset
meta
廢棄屬性:scheme
object
廢棄屬性:archive
,?classid
,?codebase
,?codetype
,?declare
,?standby
param
廢棄屬性:valuetype
,?type
table
廢棄屬性:summary
td
廢棄屬性:axis
,abbr
,scope
th
廢棄屬性:axis
此外,HTML不再包含純用於表現的屬性,它們應當被CSS替代:
caption
,iframe
,img
,input
,object
,legend
,table
,hr
,div
,h1
,h2
,h3
,h4
,h5
,h6
,p
,col
,colgroup
,tbody
,td
,tfoot
,th
,thead
和tr
的align
屬性被廢棄body
的alink
,link
,text
,background
屬性被廢棄table
,tr
,td
,th
和body
的bgcolor
屬性被廢棄object
的border
屬性被廢棄table
的cellpadding
和cellspacing
屬性被廢棄col
,colgroup
,tbody
,td
,tfoot
,th
,thead
和tr
的char
和charoff
屬性被廢棄br
的clear
屬性被廢棄dl
,ol
和ul
的compact
屬性被廢棄table
的frame
屬性被廢棄iframe
的frameborder
屬性被廢棄td
和th
的height
屬性被廢棄img
和object
的hspace
和vspace
屬性被廢棄iframe
的marginheight
和marginwidth
屬性被廢棄hr
的noshade
屬性被廢棄td
和th
的nowrap
屬性被廢棄table
的rules
屬性被廢棄iframe
的scrolling
屬性被廢棄hr
的size
屬性被廢棄li
,和ul
的type
屬性被廢棄col
,colgroup
,tbody
,td
,tfoot
,th
,thead
和tr
的valign
屬性被廢棄hr
,table
,td
,th
,col
,colgroup
和pre
的width
屬性被廢棄
下列屬性允許使用,但不鼓勵被使用:
img
元素上的border
屬性。如果使用,要求使用0作爲值。應當替代爲CSS控制script
元素上的language
屬性。如果使用,要求使用JavaScript
(不區分大小寫),同時不應當與type
屬性衝突。由於它沒有實際意義,開發應當省略它a
的name
屬性。開發應當使用id
來替代它
4. 內容模型
內容模型即元素的嵌套規則。
內容模型層面,HTML4有這些混亂的規則:
- 有兩個大類"inline"和"block-level"元素,有一些元素不屬於任何一個類別
- 有一些元素允許嵌套inline元素(如
p
);
有些允許嵌套block-level元素(如body
);
有些都允許(如div
);
然而一些元素不根據類別、而僅僅允許嵌套特定元素(如table
dl
);
或完全不允許嵌套元素 - 一個元素可能在一個類別中,而內容模型卻在另外一個類別中。
比如p
屬於block-level,但內容模型爲inline。 - 更加讓人混淆的是,針對HTML4的不一樣的DTD聲明——Strict、Transitional或Frameset——有不一樣的內容模型。
比如Strict下body元素僅僅允許嵌套block-level元素,但在Transitional下,body元素兩種元素都允許嵌套 - CSS的視覺格式化模型中也存在"block-level element"和"inline-level element"的區分,它跟CSS中的
display
屬性相關,同時沒有跟HTML的內容模型有任何關聯
HTML5的內容模型不再使用"inline"和"block-level"的方式區分元素,爲避免與CSS類似概念的混淆。然而,比起HTML4,它增加了更多類別,一個元素可以屬於任意個數的類別。
HTML5中劃分出來的類別如下:
- Metadata,如
link
、script
- Flow,如
span
、div
、文本節點。它接近於HTML4層面的block-level和inline的混合 - Sectioning,如
aside
、section
- Heading,如
h1
- Phrasing,如
span
、img
、文本節點。它接近於HTML4的inline概念 - Embedded,如
img
、iframe
、svg
- Interactive,如
a
、button
、label
與HTML4有很大不一樣的一點是,HTML5中不再出現僅僅允許嵌套"block-level"的類別了(譯註:因爲HTML5已經不存在"block-level"類別的標籤了)。
比如,body
允許Flow類別的內容。這個規則比起HTML4 Strict,它更接近HTML4 Transitional。
更多變化包括:
address
元素允許嵌套Flow類別的標籤,但不允許嵌套Heading、Section類別的元素,不允許嵌套header
、footer
、另一個address
- HTML4允許
object
出現在head
內部,但HTML5不允許 noscript
元素由block-level類別轉爲Phrasing類別table
,thead
,tbody
,tfoot
,tr
,ol
,ul
及dl
元素允許爲空- 表格元素需要遵從表格模型。比如兩個單元格不允許交疊
table
元素允許tfoot
元素作爲它的最後一個子元素caption
元素允許嵌套Flow類別的元素,但不允許嵌套table
元素th
元素允許嵌套Flow類別的元素,但不允許嵌套header
元素、footer
元素、Sectioning類別或Heading類別的元素a
的內容模型爲transparent,它與它的父級擁有同樣的內容模型,這意味着在a
的父級允許Flow類別的子元素的時候,a
可以嵌套div
元素。
此外,它不允許嵌套Interactive類別的元素ins
和del
元素的內容模型爲transparent。
HTML4有類似的規則,但無法在DTD中表達出- 在
object
元素的param
子元素以後,內容模型爲transparent
(譯註:這個規則應該是爲了覆蓋object
內嵌套embed
的場景) map
元素的內容模型爲transparent
當有一個map
作爲祖先節點的時候,area
元素被當作Phrasing類別的元素,同時area
不再需要成爲map
的直接子節點legend
元素不再是fieldset
必須的子節點了
5. API
HTML5引進、修改、擴展、廢棄了很多API。
5.1 新增接口
HTML5爲了幫助創建Web App,引入了一些新的接口:
- 媒體標籤
video
和audio
的播放流程控制、同步多個媒體標籤、字幕等接口 - 表單限制驗證接口
(如setCustomValidity
) - 引入應用緩存機制,允許Web App離線的API
- 允許Web App註冊爲對應協議或媒體類型的處理應用的APP的API。
(即registerProtocolHandler
和registerContentHandler
) - 引入
contenteditable
屬性,允許編輯任意元素的接口 - 暴露會話歷史、允許使用腳本無刷新更新頁面URL
(History
接口) - base64轉換API
(atob()
及btoa()
) - 處理搜索服務提供方的接口
(AddSearchProvider()
及IsSearchProviderInstalled()
) External
接口- 打印文檔的接口
(print()
)
(譯註:下列接口是很早就有,屬於BOM中的共識部分,直到HTML5才加入標準)
- 暴露文檔URL、允許使用腳本切換、刷新頁面的接口
(Location
接口) - 基於時間的回調接口
(setTimeout()
及setInterval()
) - 提供給用戶的提示接口
(alert()
,confirm()
,prompt()
) Window
接口Navigator
接口
5.2 修改的接口
如下DOM 2的接口已被改動:
document.title
的返回值將會摺疊多個空格符document.domain
允許賦值,因此可以改變文檔的script origindocument.open()
可以清空文檔(如果調用時僅有兩個或以下參數),或像是window.open()
一樣表現(如果調用時有三個或四個參數)。在前種調用方式下,拋出一個XML異常document.close()
、document.write()
、document.writeln()
拋出一個XML異常。後兩者允許可變參數,他們可以在文檔解析階段往文檔流中加入文本,並隱式調用document.open()
。在一些情形下,他們都可能會被忽略document.getElementsByName()
將返回滿足name
符合參數的所有HTML元素HTMLFormElement
的elements
接口將返回HTMLFormControlsCollection
,包括button
,fieldset
,input
,keygen
,object
,output
,select
及textarea
HTMLSelectElement
的add()
接口允許第二個參數爲數字HTMLSelectElement
的remove()
接口在參數越界的時候,將刪除集合中第一個元素- 在所有的HTML元素中都可以調用
click()
、focus()
及blur()
接口了 a
及area
stringify爲它們的href
屬性
(譯註:意味着HTMLAnchorElement
和HTMLAreaElement
對應的toString
方法返回它們的href屬性)
5.3 Document擴展
DOM Level 2中有個HTMLDocument
接口,繼承自Document
接口,並提供了文檔內部的元素(僅侷限於HTML範疇內)訪問接口。
HTML5將這些成員移動到了Document
接口中,並在特定方向上拓展了它。由於各類文檔(譯註:XML、HTML5、SVG等等文檔)都使用了Document
接口,而HTML5範疇內的元素在所有類別的文檔中都可用,因此這些接口在SVG等文檔中都可以很好的運作。
此外,Document
接口還有一些新成員:
location
、lastModified
及readyState
:用於幫助管理文檔的元數據(metadata)dir
、head
、embeds
、plugins
、scripts
:用於獲取DOM樹的不同部分activeElement
及hasFocus
接口,用於判斷一個元素是否獲得了焦點- 文檔編輯接口:
designMode
、execCommand()
、queryCommandEnabled()
、queryCommandIndeterm()
、queryCommandState()
、queryCommandSupported()
、queryCommandValue()
- 所有的IDL事件處理屬性。此外,
onreadystatechange
是唯一一個在Document
上纔有效的接口
在腳本中修改了HTMLDocument
原型的那部分還是可以正常運轉的,由於window.HTMLDocument
也將返回Document
接口。
5.4 HTMLElement擴展
HTMLElement
接口也在HTML5中得到了擴展:
- 用於得到
data-*
的屬性的接口dataset
click()
、focus()
、blur()
接口允許腳本模擬用戶點擊與切換焦點accessKeyLabel
給予UA賦予該元素的快捷鍵,開發可以通過accesskey
屬性來影響UA的該行爲isContentEditable
返回元素是否可以編輯- 全部的IDL事件處理屬性
- 得到元素屬性的接口如
translate
、hidden
、tabIndex
、accessKey
、contentEditable
、spellcheck
、style
(譯註:DOM Level 2僅建議採用Element接口上的setAttribute和getAttribute來獲取或設置HTML Attribute,HTML5的這些定義擴展了HTML Attribute的範圍,讓它們可以像DOM Property一樣set和get——UA早已廣泛支持) - 有些之前在
HTMLElement
上定義接口被移動到了Element
接口中:id
、className
、classList
、getElementsByClassName()
(譯註:擴展了DOM Level 2上的Element接口定義,可以直接set/get id等屬性值了——UA早已廣泛支持)
5.5 其它接口擴展
DOM Level 2中的其它接口也得到了擴展。
接口 | 新增接口 |
HTMLOptionsCollection |
legacy caller、setter creator、add() 、remove() 、selectedIndex
|
HTMLFormElement |
通過name或index索引的getter、checkValidity() |
HTMLSelectElement |
getter、setter creator、item() 、namedItem() 、labels 、selectedOptions 及各種validate接口函數 |
HTMLOptionElement |
構造器new Option() |
HTMLInputElement |
files 、height 、indeterminate 、list 、valueAsDate 、valueAsNumber 、width 、stepUp() 、stepDown() 、labels 、文本選取區域API及各種validate接口函數 |
HTMLTextAreaElement |
textLength 、labels 、文本選取區域API及各種validate接口函數 |
HTMLButtonElement |
labels 及各種validate接口函數 |
HTMLLabelElement |
control |
HTMLFieldSetElement |
type 、elements 及各種validate接口函數 |
HTMLAnchorElement |
relList 、text |
HTMLLinkElement |
relList |
HTMLAreaElement |
relList |
HTMLImageElement |
構造器new Image() 、naturalWidth 、naturalHeight 、complete
|
HTMLObjectElement |
contentWindow 、legacy caller及各種validate接口函數 |
HTMLMapElement |
images |
HTMLTableElement |
createTBody() |
HTMLIFrameElement |
contentWindow |
此外:
HTMLLinkElement
和HTMLStyleElement
實現了CSSOM中的LinkStyle
接口HTMLAnchorElement
、HTMLLinkElement
和HTMLAreaElement
實現了URLUtils
接口
5.6 廢棄接口
- 在HTML5中已被廢棄的屬性,其對應IDL屬性接口也將被廢棄。如
bgColor
已被廢棄,那麼HTMLBodyElement
之上的IDL屬性接口bgcolor
也被廢棄 - 在HTML5中已被廢棄的元素,其對應接口也被廢棄,包括
HTMLAppletElement
,HTMLFrameSetElement
,HTMLFrameElement
,HTMLDirectoryElement
及HTMLFontElement
、HTMLBaseFontElement
- 由於HTML解析器將
isindex
替代爲其他元素了,HTMLIsIndexElement
接口被廢棄 - 一些成員屬性從
HTMLDocument
接口移動到了Document
接口,因此在原來的HTMLDocument
下被廢棄:anchors
和applets
。