翻譯:HTML5與HTML4的區別

本文選譯自: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 callerStringifierssettergettercreatordeleter等均保留原文

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+xmlapplication/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元素。

  • mathsvg的開始標籤將會導致HTML解析器轉爲特殊的插入模式,以將元素和屬性放入合適的命名空間,並轉化大小寫,並支持XML中的空元素語法
  • HTML中的math/svg的相關元素及其屬性依然是區分大小寫的
  • 可以省略namespace(譯註:如svg的namespace可以省略xmlns="http://www.w3.org/2000/svg"
  • 在這個特殊的插入模式裏,可以使用CDATA語法
  • 一些MathML和SVG元素可能導致解析器轉回HTML解析模式,比如mtextforeignObject,在這些元素內部你可以使用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 其它方面

  • 字符實體&lang;&rang;分別代表U+27E8U+27E9(數學意義上的左右尖括號?、?),而非U+2329U+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片段
    (譯註:這替代了我們常見的方案textareascript type="text/html"script type="text/template"

其它的新標籤:

  • audiovideo代表了多媒體元素,它們也提供了相應的API用於開發者定製UI,同時也提供了觸發UA展示其默認控件的方式。
    source元素跟他們一同使用,用於有多類型的內容流的情形
    track提供了audio的即字幕
  • embed用於插件內容
  • mark代表了一個文檔中需要標記或高亮的引用部分
  • progress代表了一個任務的完成程度
  • meter代表了一個度量,比如對磁盤空間的度量
  • time代表了時間/日期
  • rubyrtrp爲ruby表達式
  • bdi代表了一段隔絕於周圍元素的雙向書寫文本格式
  • wbr代表了可能斷行的部分
  • canvas用於渲染動態位圖
  • datalistinputlist屬性共同使用,可以用於創建下拉選擇框控件
<input list="browsers">
<datalist id="browsers">
 <option value="Safari">
 <option value="Internet Explorer">
 <option value="Opera">
 <option value="Firefox">
</datalist>
  • keygen代表生成的密鑰對
  • output代表了一種輸出內容

3.2 新屬性

表單元素:

  • inputtype屬性有了更多新值:telsearchurlemaildatetimenumberrangecolor
  • form屬性可用於在inputoutputselecttextareabuttonlabelobjectfieldset元素上指定關聯的<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>
  • inputtextarea元素可使用placeholder屬性來幫助用戶填寫數據,注意,它不應當替代label元素的作用
  • type="hidden"inputselecttextareabutton可使用autofocus元素來制定自動獲得焦點的元素
  • inputselecttextarea有新屬性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, patternstep
  • input type="image"的元素有widthheight屬性
  • inputtextarea元素有了dirname以指明書寫方向(譯註:ltr或rtl)
  • textarea元素有了新的屬性,如maxlengthminlengthwrap來控制最大輸入長度與提交時的斷行行爲
  • form元素有了novalidate屬性來禁止默認的表單驗證行爲
  • inputbutton元素有了formaction, formenctype, formmethod, formnovalidateformtarget屬性,用於覆蓋繼承自form的action, enctype, method, novalidatetarget屬性
  • input元素有了minlengthmaxlength屬性

非表單元素的新屬性:

  • area元素同alink元素一樣有了新的hreflangtyperel屬性
  • base元素同a一樣可以有target屬性
  • meta元素有了charset屬性
  • script元素有了async屬性將影響腳本的加載與運行
  • html元素有manifest屬性,可用於指定緩存行爲
  • link元素有了新的屬性sizes,可以指定不同的大小的favicon
  • ol元素有了新的屬性reversed,它代表着列表的順序是逆序的
  • iframe元素有了sandboxsrcdoc屬性以支持沙盒安全保護
  • object元素有了typemustmatch元素以保證更安全的嵌入順序
  • img元素有crossorigin屬性以在canvas中支持CORS

HTML4中有一些全部標籤都可以使用的屬性,在HTML5中叫做全局屬性,如:accesskey , class, dir, id, lang, style, tabindextitle。此外,XHTML 1.0僅允許一些標籤上的xml:space屬性設置。
有這些新的全局屬性:

  • contenteditable
  • data-*代表了開發定製的屬性,這種格式可以避免與將來的新HTML屬性衝突
  • hidden屬性代表一個元素不再與文檔相關
  • rolearia-*用於支持無障礙訪問
  • 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元素依然表示從另外一個來源裏摘錄的內容,但現在允許包含footercite元素
  • 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處理更好:basefontbigcenterfontstrikett

這些元素被廢棄,因爲他們有損可訪問性與可用性:frameframesetnoframes

這些元素被廢棄,因爲他們罕有人使用、有其他元素替代或造成了迷惑:

  • 在表示省略語的時候,acronymabbr取代
  • appletobject取代
  • isindex元素被表單元素取代
  • dirul取代

最後,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, theadtralign屬性被廢棄
  • bodyalink, link, text, background屬性被廢棄
  • table, tr, td, thbodybgcolor屬性被廢棄
  • objectborder屬性被廢棄
  • tablecellpaddingcellspacing屬性被廢棄
  • col, colgroup, tbody, td, tfoot, th, theadtrcharcharoff屬性被廢棄
  • brclear屬性被廢棄
  • dl, olulcompact屬性被廢棄
  • tableframe屬性被廢棄
  • iframeframeborder屬性被廢棄
  • tdthheight屬性被廢棄
  • imgobjecthspacevspace屬性被廢棄
  • iframemarginheightmarginwidth屬性被廢棄
  • hrnoshade屬性被廢棄
  • tdthnowrap屬性被廢棄
  • tablerules屬性被廢棄
  • iframescrolling屬性被廢棄
  • hrsize屬性被廢棄
  • li,和ultype屬性被廢棄
  • col, colgroup, tbody, td, tfoot, th, theadtrvalign屬性被廢棄
  • hr, table, td, th, col, colgroupprewidth屬性被廢棄

下列屬性允許使用,但不鼓勵被使用:

  • img元素上的border屬性。如果使用,要求使用0作爲值。應當替代爲CSS控制
  • script元素上的language屬性。如果使用,要求使用JavaScript(不區分大小寫),同時不應當與type屬性衝突。由於它沒有實際意義,開發應當省略它
  • aname屬性。開發應當使用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,如linkscript
  • Flow,如spandiv、文本節點。它接近於HTML4層面的block-level和inline的混合
  • Sectioning,如asidesection
  • Heading,如h1
  • Phrasing,如spanimg、文本節點。它接近於HTML4的inline概念
  • Embedded,如imgiframesvg
  • Interactive,如abuttonlabel

與HTML4有很大不一樣的一點是,HTML5中不再出現僅僅允許嵌套"block-level"的類別了(譯註:因爲HTML5已經不存在"block-level"類別的標籤了)。
比如,body允許Flow類別的內容。這個規則比起HTML4 Strict,它更接近HTML4 Transitional。

更多變化包括:

  • address元素允許嵌套Flow類別的標籤,但不允許嵌套Heading、Section類別的元素,不允許嵌套headerfooter、另一個address
  • HTML4允許object出現在head內部,但HTML5不允許
  • noscript元素由block-level類別轉爲Phrasing類別
  • table, thead, tbody, tfoot, tr, ol, uldl元素允許爲空
  • 表格元素需要遵從表格模型。比如兩個單元格不允許交疊
  • table元素允許tfoot元素作爲它的最後一個子元素
  • caption元素允許嵌套Flow類別的元素,但不允許嵌套table元素
  • th元素允許嵌套Flow類別的元素,但不允許嵌套header元素、footer元素、Sectioning類別或Heading類別的元素
  • a的內容模型爲transparent,它與它的父級擁有同樣的內容模型,這意味着在a的父級允許Flow類別的子元素的時候,a可以嵌套div元素。
    此外,它不允許嵌套Interactive類別的元素
  • insdel元素的內容模型爲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,引入了一些新的接口:

  • 媒體標籤videoaudio的播放流程控制、同步多個媒體標籤、字幕等接口
  • 表單限制驗證接口
    (如setCustomValidity
  • 引入應用緩存機制,允許Web App離線的API
  • 允許Web App註冊爲對應協議或媒體類型的處理應用的APP的API。
    (即registerProtocolHandlerregisterContentHandler
  • 引入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 origin
  • document.open()可以清空文檔(如果調用時僅有兩個或以下參數),或像是window.open()一樣表現(如果調用時有三個或四個參數)。在前種調用方式下,拋出一個XML異常
  • document.close()document.write()document.writeln()拋出一個XML異常。後兩者允許可變參數,他們可以在文檔解析階段往文檔流中加入文本,並隱式調用document.open()。在一些情形下,他們都可能會被忽略
  • document.getElementsByName()將返回滿足name符合參數的所有HTML元素
  • HTMLFormElementelements接口將返回HTMLFormControlsCollection,包括button, fieldset, input, keygen, object, output, selecttextarea
  • HTMLSelectElementadd()接口允許第二個參數爲數字
  • HTMLSelectElementremove()接口在參數越界的時候,將刪除集合中第一個元素
  • 在所有的HTML元素中都可以調用click()focus()blur()接口了
  • aareastringify爲它們的href屬性
    (譯註:意味着HTMLAnchorElementHTMLAreaElement對應的toString方法返回它們的href屬性)

5.3 Document擴展

DOM Level 2中有個HTMLDocument接口,繼承自Document接口,並提供了文檔內部的元素(僅侷限於HTML範疇內)訪問接口。
HTML5將這些成員移動到了Document接口中,並在特定方向上拓展了它。由於各類文檔(譯註:XML、HTML5、SVG等等文檔)都使用了Document接口,而HTML5範疇內的元素在所有類別的文檔中都可用,因此這些接口在SVG等文檔中都可以很好的運作。

此外,Document接口還有一些新成員:

  • locationlastModifiedreadyState:用於幫助管理文檔的元數據(metadata)
  • dirheadembedspluginsscripts:用於獲取DOM樹的不同部分
  • activeElementhasFocus接口,用於判斷一個元素是否獲得了焦點
  • 文檔編輯接口:designModeexecCommand()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事件處理屬性
  • 得到元素屬性的接口如translatehiddentabIndexaccessKeycontentEditablespellcheckstyle
    (譯註:DOM Level 2僅建議採用Element接口上的setAttribute和getAttribute來獲取或設置HTML Attribute,HTML5的這些定義擴展了HTML Attribute的範圍,讓它們可以像DOM Property一樣set和get——UA早已廣泛支持)
  • 有些之前在HTMLElement上定義接口被移動到了Element接口中:idclassNameclassListgetElementsByClassName()
    (譯註:擴展了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()labelsselectedOptions及各種validate接口函數
HTMLOptionElement 構造器new Option()
HTMLInputElement filesheightindeterminatelistvalueAsDatevalueAsNumberwidthstepUp()stepDown()labels、文本選取區域API及各種validate接口函數
HTMLTextAreaElement textLengthlabels、文本選取區域API及各種validate接口函數
HTMLButtonElement labels及各種validate接口函數
HTMLLabelElement control
HTMLFieldSetElement typeelements及各種validate接口函數
HTMLAnchorElement relListtext
HTMLLinkElement relList
HTMLAreaElement relList
HTMLImageElement 構造器new Image()naturalWidthnaturalHeightcomplete
HTMLObjectElement contentWindow、legacy caller及各種validate接口函數
HTMLMapElement images
HTMLTableElement createTBody()
HTMLIFrameElement contentWindow

此外:

  • HTMLLinkElementHTMLStyleElement實現了CSSOM中的LinkStyle接口
  • HTMLAnchorElementHTMLLinkElementHTMLAreaElement實現了URLUtils接口

5.6 廢棄接口

  • 在HTML5中已被廢棄的屬性,其對應IDL屬性接口也將被廢棄。如bgColor已被廢棄,那麼HTMLBodyElement之上的IDL屬性接口bgcolor也被廢棄
  • 在HTML5中已被廢棄的元素,其對應接口也被廢棄,包括HTMLAppletElement, HTMLFrameSetElement, HTMLFrameElement, HTMLDirectoryElementHTMLFontElementHTMLBaseFontElement
  • 由於HTML解析器將isindex替代爲其他元素了,HTMLIsIndexElement接口被廢棄
  • 一些成員屬性從HTMLDocument接口移動到了Document接口,因此在原來的HTMLDocument下被廢棄:anchorsapplets
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章