摘要:但由于翻譯時(shí)草稿只發(fā)布了不到二十天,本文有很好的時(shí)效性。語法中同時(shí)定義了解析規(guī)則包括異常的處理方式。語法要求聲明,以確保瀏覽器以標(biāo)準(zhǔn)模式渲染頁面。語法中的聲明為,不區(qū)分大小寫。此外,僅允許一些標(biāo)簽上的屬性設(shè)置。
本文選譯自:W3C Working Group Note: HTML5 Differences from HTML4。
解釋一下W3C Working Group Note,作為“工作組筆記” 發(fā)布,意味著它是一個(gè)草稿版文檔,可能被其它文檔更新、替換或廢棄。但由于翻譯時(shí)草稿只發(fā)布了不到二十天,本文有很好的時(shí)效性。也作為比較性質(zhì)的文獻(xiàn),比起HTML5的標(biāo)準(zhǔn)它更容易理解,可以讓人快速地理解HTML5的變化輪廓。
關(guān)于本翻譯:原文所有指涉HTML5的地方用的要么是無定語的"HTML",要么是“新的HTML”,為了避免和HTML4的混淆,均寫作HTML5;
由于缺乏一目了然的譯名,原文中的User Agent統(tǒng)一簡寫為UA;
由于原文的章節(jié)劃分非常合理,第五節(jié)的屬性均為Property,此外其它的章節(jié)均是Attribute,因此本文不在翻譯上區(qū)分它們,均譯作“屬性”;
Application統(tǒng)一簡寫為App;
為避免混淆,第四節(jié)即文檔模型章節(jié)部分,分類名均保留英文名不翻譯。
第五節(jié)中IDL(Interface Definition Language)相關(guān)內(nèi)容由于沒有標(biāo)準(zhǔn)翻譯,概念legacy caller、 Stringifiers、 setter、getter、creator、deleter等均保留原文
1. 簡介 1.1. 文檔范圍本文檔覆蓋W3C的HTML5標(biāo)準(zhǔn),它不包含W3C HTML5.1標(biāo)準(zhǔn)或WHATWG HTML標(biāo)準(zhǔn)。
1.4. 向后兼容HTML5是這樣被定義的:能向后兼容目前UA處理內(nèi)容的方式。為了讓語言更簡單,一些老的元素和Attribute被舍棄。比如一些純粹用于展現(xiàn)的元素(譯注:即非語義化的元素,如big)或Attribute被舍棄,因?yàn)樗麄兏m合用CSS來處理。
但UA依然可以支持老舊的屬性和元素。這就是為什么HTML5標(biāo)準(zhǔn)清楚地劃分了給開發(fā)的要求和給UA的要求。比如,開發(fā)者不應(yīng)當(dāng)使用plaintext元素,但UA需要兼容plaintext元素。
既然HTML5已區(qū)分對(duì)UA和對(duì)開發(fā)者的要求,再也不需將一些特性標(biāo)記為deprecated(不贊成使用)了。
HTML5定義了HTML5語法,日前已廣泛兼容于網(wǎng)絡(luò)上HTML4和XHTML1的文檔,但不兼容大部分HTML4中的深?yuàn)WSGML特性,大部分UA都不支持它們,比如處理指令 (processing instructions) 和標(biāo)簽簡寫 (shorthand markup)。
HTML5語法中同時(shí)定義了解析規(guī)則——包括異常的處理方式。這種解析規(guī)則能夠廣泛支持HTML4領(lǐng)域的實(shí)現(xiàn),UA可以使用這些規(guī)則來解析媒體類型為text/html的資源。
下面是一個(gè)能夠說明HTML語法的示例文檔:
Example document Example paragraph
另外一個(gè)可以被用于HTML的語法是XML。XML語法可兼容于XHTML文檔或?qū)崿F(xiàn)。使用XML語法的文檔需要配套XML文檔的媒體類型如application/xhtml+xml或application/xml來使用,同時(shí),元素需要遵循XML規(guī)則,被放到http://www.w3.org/1999/xhtml命名空間中:
2.1 符號(hào)編碼Example document Example paragraph
HTML標(biāo)準(zhǔn)中要求開發(fā)聲明編碼方式,有這些方式可以做到:
傳輸層,可以用HTTP頭部的Content-Type
在文檔頭部放置對(duì)應(yīng)使用的編碼的BOM
使用有charset的meta元素
比如可以用于聲明UTF-8編碼。這個(gè)新聲明替代了,盡管后者依然可以使用。
XML語法中,開發(fā)需要按照XML標(biāo)準(zhǔn)來設(shè)置編碼。
2.2 DoctypeHTML5語法要求聲明Doctype,以確保瀏覽器以標(biāo)準(zhǔn)模式渲染頁面。Doctype沒有其他用途。
HTML5語法中的Doctype聲明為,不區(qū)分大小寫。
之前HTML4標(biāo)準(zhǔn)中的Doctype更長,因?yàn)镠TML4語法是基于SGML的,需要引用DTD。而在新的HTML5標(biāo)準(zhǔn)中,再也不需要引用DTD了(譯注:因?yàn)镠TML5不再基于SGML)。因此,doctype只是為了確保文檔以標(biāo)準(zhǔn)模式渲染。
為了支持舊有的標(biāo)簽,可以使用作為Doctype聲明。
HTML4.0、HTML 4.01、XHTML 1.0、XHTML 1.1之類嚴(yán)格的Doctype,在HTML5中可以使用,但不被提倡。
在XML語法中,可以使用任何Doctype聲明或省略Doctype。使用XML媒體類型的文檔永遠(yuǎn)會(huì)在標(biāo)準(zhǔn)模式中被解析。
HTML語法允許文檔內(nèi)嵌MathML和SVG元素。
math和svg的開始標(biāo)簽將會(huì)導(dǎo)致HTML解析器轉(zhuǎn)為特殊的插入模式,以將元素和屬性放入合適的命名空間,并轉(zhuǎn)化大小寫,并支持XML中的空元素語法
HTML中的math/svg的相關(guān)元素及其屬性依然是區(qū)分大小寫的
可以省略namespace(譯注:如svg的namespace可以省略xmlns="http://www.w3.org/2000/svg")
在這個(gè)特殊的插入模式里,可以使用CDATA語法
一些MathML和SVG元素可能導(dǎo)致解析器轉(zhuǎn)回HTML解析模式,比如mtext和foreignObject,在這些元素內(nèi)部你可以使用HTML元素或者新的math/svg元素。
一個(gè)使用了svg功能的例子如下:
2.4 其它方面SVG in text/html A green circle:
字符實(shí)體〈和〉分別代表U+27E8和U+27E9(數(shù)學(xué)意義上的左右尖括號(hào)?、?),而非U+2329和U+232A(尖括號(hào)的舊有表示方法?、 ?)。(譯注,見維基百科的說明)
一些新的字符實(shí)體被加入,包括在MathML中定義的全部字符實(shí)體
空元素(如br)允許有一個(gè)結(jié)尾反斜杠(trailing slash)
相較于HTML4,HTML5中的&在更多場景下不轉(zhuǎn)義
屬性需要起碼一個(gè)空格字符來區(qū)隔開
有空值的屬性等價(jià)于屬性與值完全相同的情形(譯注:比如就相當(dāng)于),即使這個(gè)屬性并非boolean屬性
相較于HTML4,HTML5中省略了引號(hào)的屬性值允許使用更大范圍的字符集
HTML解析器不再對(duì)屬性值中間出現(xiàn)的空格進(jìn)行標(biāo)準(zhǔn)化,比如中的id不再有效,同時(shí)中的value中的空行字符可以被使用,而不需要使用實(shí)體來替代
optgroup結(jié)束標(biāo)簽可選填
colgroup開始標(biāo)簽可選填,HTML解析器會(huì)根據(jù)上下文補(bǔ)完
3. 語言 3.1 新標(biāo)簽以下標(biāo)簽的引入是為了用于更好的文檔結(jié)構(gòu):
section代表一般意義上的文檔/app區(qū)塊,它應(yīng)當(dāng)與h1~h6等元素搭配使用,以標(biāo)示文檔層級(jí)
article代表了獨(dú)立于文檔的一塊內(nèi)容,比如blog入口或報(bào)刊文章
main代表了文檔/app的主體內(nèi)容
aside代表了一些與頁面其它部分關(guān)聯(lián)性不那么大的內(nèi)容
header代表了一組介紹性或?qū)Ш叫再|(zhì)的輔助內(nèi)容
footer代表了一個(gè)區(qū)塊的底部,可以包含作者、版權(quán)等信息
nav代表了文檔中可以導(dǎo)航的區(qū)塊
figure代表了代表了一個(gè)獨(dú)立的內(nèi)容流
figcaption可以用作內(nèi)容流的標(biāo)題
template可以用于聲明一塊可用于克隆與插入的HTML片段
(譯注:這替代了我們常見的方案textarea、script type="text/html"、script type="text/template")
其它的新標(biāo)簽:
audio和video代表了多媒體元素,它們也提供了相應(yīng)的API用于開發(fā)者定制UI,同時(shí)也提供了觸發(fā)UA展示其默認(rèn)控件的方式。
source元素跟他們一同使用,用于有多類型的內(nèi)容流的情形
track提供了audio的文本軌道(譯注:包含字幕等)
embed用于插件內(nèi)容
mark代表了一個(gè)文檔中需要標(biāo)記或高亮的引用部分
progress代表了一個(gè)任務(wù)的完成程度
meter代表了一個(gè)度量,比如對(duì)磁盤空間的度量
time代表了時(shí)間/日期
ruby、rt、rp為ruby表達(dá)式
bdi代表了一段隔絕于周圍元素的雙向書寫文本格式
wbr代表了可能斷行的部分
canvas用于渲染動(dòng)態(tài)位圖
datalist與input的list屬性共同使用,可以用于創(chuàng)建下拉選擇框控件
keygen代表生成的密鑰對(duì)
output代表了一種輸出內(nèi)容
3.2 新屬性表單元素:
input的type屬性有了更多新值:tel、search、url、email、date、time、number、range、color
form屬性可用于在input、output、select、textarea、button、label、object、fieldset元素上指定關(guān)聯(lián)的元素的id,不局限于常規(guī)的層疊關(guān)系
Key | Value | Action |
---|---|---|
... |
input、textarea元素可使用placeholder屬性來幫助用戶填寫數(shù)據(jù),注意,它不應(yīng)當(dāng)替代label元素的作用
非type="hidden"的input、select、textarea、button可使用autofocus元素來制定自動(dòng)獲得焦點(diǎn)的元素
input、select、textarea有新屬性required,代表了用戶需要填寫該字段,才可以提交這個(gè)表單。select的第一個(gè)元素應(yīng)當(dāng)為沒有值的元素,以作為空值的占位符
fieldset標(biāo)簽允許使用disabled屬性,這將禁止所有子元素的交互;它同時(shí)還可以使用name以方便腳本獲取
input元素有了用于指明輸入限制的屬性autocomplete, min,max, multiple, pattern及step
input type="image"的元素有width和height屬性
input與textarea元素有了dirname以指明書寫方向(譯注:ltr或rtl)
textarea元素有了新的屬性,如maxlength、minlength、wrap來控制最大輸入長度與提交時(shí)的斷行行為
form元素有了novalidate屬性來禁止默認(rèn)的表單驗(yàn)證行為
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屬性將影響腳本的加載與運(yùn)行
html元素有manifest屬性,可用于指定緩存行為
link元素有了新的屬性sizes,可以指定不同的大小的favicon
ol元素有了新的屬性reversed,它代表著列表的順序是逆序的
iframe元素有了sandbox和srcdoc屬性以支持沙盒安全保護(hù)
object元素有了typemustmatch元素以保證更安全的嵌入順序
img元素有crossorigin屬性以在canvas中支持CORS
HTML4中有一些全部標(biāo)簽都可以使用的屬性,在HTML5中叫做全局屬性,如:accesskey , class, dir, id, lang, style, tabindex 及title。此外,XHTML 1.0僅允許一些標(biāo)簽上的xml:space屬性設(shè)置。
有這些新的全局屬性:
contenteditable
data-*代表了開發(fā)定制的屬性,這種格式可以避免與將來的新HTML屬性沖突
hidden屬性代表一個(gè)元素不再與文檔相關(guān)
role及aria-*用于支持無障礙訪問
spellcheck用于指定內(nèi)容是否允許進(jìn)行拼寫檢查
translate用于指定內(nèi)容是否應(yīng)當(dāng)翻譯
3.3 修改的標(biāo)簽b元素現(xiàn)在表示一段加強(qiáng)表示的文本,但并不表達(dá)額外的重要性、暗示需要加重的語氣和聲調(diào)(譯注:與em的語義區(qū)分開來)。比如文檔摘要里的關(guān)鍵字、產(chǎn)品評(píng)價(jià)里的產(chǎn)品名字、可以與之交互的文本等等
i元素現(xiàn)在代表了一段需要使用不同的語氣或聲調(diào)的文本,或代表了不同品類的文本,如分類學(xué)名稱、科技術(shù)語、其他語言中的方言或俚語等等
s元素代表了不再準(zhǔn)確/相關(guān)的元素
small元素代表了旁注,如免責(zé)聲明、注意事項(xiàng)、法律限制或版權(quán)聲明
strong元素代表了重要性,而非著重強(qiáng)調(diào)
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.(譯注:沒理解這個(gè)元素的語義)
address元素的范圍現(xiàn)已由最近的祖先article/body元素決定,代表了后者的聯(lián)系信息
script標(biāo)簽可以被用于自定義數(shù)據(jù)塊
blockquote元素依然表示從另外一個(gè)來源里摘錄的內(nèi)容,但現(xiàn)在允許包含footer或cite元素
dl元素現(xiàn)在代表了有關(guān)聯(lián)的命名-值的列表,但不再適用于對(duì)話了
hr元素代表了段與段之間的主題意義上的區(qū)隔(譯注:即暗示段落主題已經(jīng)發(fā)生了變化)
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.(譯注:沒看出來前后有什么區(qū)別)
3.4. 修改的屬性(譯注:大部分是限制放寬,略)
3.5. 廢棄的元素開發(fā)不應(yīng)當(dāng)使用這些廢棄的元素了,但是UA仍應(yīng)當(dāng)支持他們。
這些元素被廢棄,因?yàn)樗麄儍H僅是用于展現(xiàn)層面的標(biāo)簽,他們用CSS處理更好:basefont、big、center、font、strike、tt。
這些元素被廢棄,因?yàn)樗麄冇袚p可訪問性與可用性:frame、frameset、noframes
這些元素被廢棄,因?yàn)樗麄兒庇腥耸褂谩⒂衅渌靥娲蛟斐闪嗣曰螅?/p>
在表示省略語的時(shí)候,acronym被abbr取代
applet被object取代
isindex元素被表單元素取代
dir被ul取代
最后,noscript僅僅可以在HTML語法中被使用,它不被XML語法允許。
因?yàn)樾枰谝曈X上隱藏它內(nèi)部的內(nèi)容,同時(shí)不允許noscript內(nèi)部內(nèi)容有運(yùn)行腳本、應(yīng)用樣式、擁有可以提交的表單、加載資源等行為,所以noscript內(nèi)部的內(nèi)容將被當(dāng)作純文本解析。
這些屬性被廢棄,你可以在這里找到你能夠用以替代的屬性或標(biāo)簽。
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不再包含純用于表現(xiàn)的屬性,它們應(yīng)當(dāng)被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屬性被廢棄
下列屬性允許使用,但不鼓勵(lì)被使用:
img元素上的border屬性。如果使用,要求使用0作為值。應(yīng)當(dāng)替代為CSS控制
script元素上的language屬性。如果使用,要求使用JavaScript(不區(qū)分大小寫),同時(shí)不應(yīng)當(dāng)與type屬性沖突。由于它沒有實(shí)際意義,開發(fā)應(yīng)當(dāng)省略它
a的name屬性。開發(fā)應(yīng)當(dāng)使用id來替代它
4. 內(nèi)容模型內(nèi)容模型即元素的嵌套規(guī)則。
內(nèi)容模型層面,HTML4有這些混亂的規(guī)則:
有兩個(gè)大類"inline"和"block-level"元素,有一些元素不屬于任何一個(gè)類別
有一些元素允許嵌套inline元素(如p);
有些允許嵌套block-level元素(如body);
有些都允許(如div);
然而一些元素不根據(jù)類別、而僅僅允許嵌套特定元素(如table dl);
或完全不允許嵌套元素
一個(gè)元素可能在一個(gè)類別中,而內(nèi)容模型卻在另外一個(gè)類別中。
比如p屬于block-level,但內(nèi)容模型為inline。
更加讓人混淆的是,針對(duì)HTML4的不一樣的DTD聲明——Strict、Transitional或Frameset——有不一樣的內(nèi)容模型。
比如Strict下body元素僅僅允許嵌套block-level元素,但在Transitional下,body元素兩種元素都允許嵌套
CSS的視覺格式化模型中也存在"block-level element"和"inline-level element"的區(qū)分,它跟CSS中的display屬性相關(guān),同時(shí)沒有跟HTML的內(nèi)容模型有任何關(guān)聯(lián)
HTML5的內(nèi)容模型不再使用"inline"和"block-level"的方式區(qū)分元素,為避免與CSS類似概念的混淆。然而,比起HTML4,它增加了更多類別,一個(gè)元素可以屬于任意個(gè)數(shù)的類別。
HTML5中劃分出來的類別如下:
Metadata,如link、script
Flow,如span、div、文本節(jié)點(diǎn)。它接近于HTML4層面的block-level和inline的混合
Sectioning,如aside、section
Heading,如h1
Phrasing,如span、img、文本節(jié)點(diǎn)。它接近于HTML4的inline概念
Embedded,如img、iframe、svg
Interactive,如a、button、label
與HTML4有很大不一樣的一點(diǎn)是,HTML5中不再出現(xiàn)僅僅允許嵌套"block-level"的類別了(譯注:因?yàn)镠TML5已經(jīng)不存在"block-level"類別的標(biāo)簽了)。
比如,body允許Flow類別的內(nèi)容。這個(gè)規(guī)則比起HTML4 Strict,它更接近HTML4 Transitional。
更多變化包括:
address元素允許嵌套Flow類別的標(biāo)簽,但不允許嵌套Heading、Section類別的元素,不允許嵌套header、footer、另一個(gè)address
HTML4允許object出現(xiàn)在head內(nèi)部,但HTML5不允許
noscript元素由block-level類別轉(zhuǎn)為Phrasing類別
table, thead, tbody, tfoot, tr, ol, ul及dl元素允許為空
表格元素需要遵從表格模型。比如兩個(gè)單元格不允許交疊
table元素允許tfoot元素作為它的最后一個(gè)子元素
caption元素允許嵌套Flow類別的元素,但不允許嵌套table元素
th元素允許嵌套Flow類別的元素,但不允許嵌套header元素、footer元素、Sectioning類別或Heading類別的元素
a的內(nèi)容模型為transparent,它與它的父級(jí)擁有同樣的內(nèi)容模型,這意味著在a的父級(jí)允許Flow類別的子元素的時(shí)候,a可以嵌套div元素。
此外,它不允許嵌套Interactive類別的元素
ins和del元素的內(nèi)容模型為transparent。
HTML4有類似的規(guī)則,但無法在DTD中表達(dá)出
在object元素的param子元素以后,內(nèi)容模型為transparent
(譯注:這個(gè)規(guī)則應(yīng)該是為了覆蓋object內(nèi)嵌套embed的場景)
map元素的內(nèi)容模型為transparent
當(dāng)有一個(gè)map作為祖先節(jié)點(diǎn)的時(shí)候,area元素被當(dāng)作Phrasing類別的元素,同時(shí)area不再需要成為map的直接子節(jié)點(diǎn)
legend元素不再是fieldset必須的子節(jié)點(diǎn)了
5. APIHTML5引進(jìn)、修改、擴(kuò)展、廢棄了很多API。
5.1 新增接口HTML5為了幫助創(chuàng)建Web App,引入了一些新的接口:
媒體標(biāo)簽video和audio的播放流程控制、同步多個(gè)媒體標(biāo)簽、字幕等接口
表單限制驗(yàn)證接口
(如setCustomValidity)
引入應(yīng)用緩存機(jī)制,允許Web App離線的API
允許Web App注冊(cè)為對(duì)應(yīng)協(xié)議或媒體類型的處理應(yīng)用的APP的API。
(即registerProtocolHandler和registerContentHandler)
引入contenteditable屬性,允許編輯任意元素的接口
暴露會(huì)話歷史、允許使用腳本無刷新更新頁面URL
(History接口)
base64轉(zhuǎn)換API
(atob()及btoa())
處理搜索服務(wù)提供方的接口
(AddSearchProvider()及IsSearchProviderInstalled())
External接口
打印文檔的接口
(print())
(譯注:下列接口是很早就有,屬于BOM中的共識(shí)部分,直到HTML5才加入標(biāo)準(zhǔn))
暴露文檔URL、允許使用腳本切換、刷新頁面的接口
(Location接口)
基于時(shí)間的回調(diào)接口
(setTimeout()及setInterval())
提供給用戶的提示接口
(alert(),confirm(),prompt())
Window接口
Navigator接口
5.2 修改的接口如下DOM 2的接口已被改動(dòng):
document.title的返回值將會(huì)折疊多個(gè)空格符
document.domain允許賦值,因此可以改變文檔的script origin
document.open()可以清空文檔(如果調(diào)用時(shí)僅有兩個(gè)或以下參數(shù)),或像是window.open()一樣表現(xiàn)(如果調(diào)用時(shí)有三個(gè)或四個(gè)參數(shù))。在前種調(diào)用方式下,拋出一個(gè)XML異常
document.close()、document.write()、document.writeln()拋出一個(gè)XML異常。后兩者允許可變參數(shù),他們可以在文檔解析階段往文檔流中加入文本,并隱式調(diào)用document.open()。在一些情形下,他們都可能會(huì)被忽略
document.getElementsByName()將返回滿足name符合參數(shù)的所有HTML元素
HTMLFormElement的elements接口將返回HTMLFormControlsCollection,包括button, fieldset, input, keygen, object, output, select及textarea
HTMLSelectElement的add()接口允許第二個(gè)參數(shù)為數(shù)字
HTMLSelectElement的remove()接口在參數(shù)越界的時(shí)候,將刪除集合中第一個(gè)元素
在所有的HTML元素中都可以調(diào)用click()、focus()及blur()接口了
a及areastringify為它們的href屬性
(譯注:意味著HTMLAnchorElement和HTMLAreaElement對(duì)應(yīng)的toString方法返回它們的href屬性)
DOM Level 2中有個(gè)HTMLDocument接口,繼承自Document接口,并提供了文檔內(nèi)部的元素(僅局限于HTML范疇內(nèi))訪問接口。
HTML5將這些成員移動(dòng)到了Document接口中,并在特定方向上拓展了它。由于各類文檔(譯注:XML、HTML5、SVG等等文檔)都使用了Document接口,而HTML5范疇內(nèi)的元素在所有類別的文檔中都可用,因此這些接口在SVG等文檔中都可以很好的運(yùn)作。
此外,Document接口還有一些新成員:
location、lastModified及readyState:用于幫助管理文檔的元數(shù)據(jù)(metadata)
dir、head、embeds、plugins、scripts:用于獲取DOM樹的不同部分
activeElement及hasFocus接口,用于判斷一個(gè)元素是否獲得了焦點(diǎn)
文檔編輯接口:designMode、execCommand()、queryCommandEnabled()、queryCommandIndeterm()、queryCommandState()、queryCommandSupported()、queryCommandValue()
所有的IDL事件處理屬性。此外,onreadystatechange是唯一一個(gè)在Document上才有效的接口
在腳本中修改了HTMLDocument原型的那部分還是可以正常運(yùn)轉(zhuǎn)的,由于window.HTMLDocument也將返回Document接口。
5.4 HTMLElement擴(kuò)展HTMLElement接口也在HTML5中得到了擴(kuò)展:
用于得到data-*的屬性的接口dataset
click()、focus()、blur()接口允許腳本模擬用戶點(diǎn)擊與切換焦點(diǎn)
accessKeyLabel給予UA賦予該元素的快捷鍵,開發(fā)可以通過accesskey屬性來影響UA的該行為
isContentEditable返回元素是否可以編輯
全部的IDL事件處理屬性
得到元素屬性的接口如translate、hidden、tabIndex、accessKey、contentEditable、spellcheck、style
(譯注:DOM Level 2僅建議采用Element接口上的setAttribute和getAttribute來獲取或設(shè)置HTML Attribute,HTML5的這些定義擴(kuò)展了HTML Attribute的范圍,讓它們可以像DOM Property一樣set和get——UA早已廣泛支持)
有些之前在HTMLElement上定義接口被移動(dòng)到了Element接口中:id、className、classList、getElementsByClassName()
(譯注:擴(kuò)展了DOM Level 2上的Element接口定義,可以直接set/get id等屬性值了——UA早已廣泛支持)
DOM Level 2中的其它接口也得到了擴(kuò)展。
接口 | 新增接口 |
HTMLOptionsCollection | legacy caller、setter creator、add()、remove()、selectedIndex |
HTMLFormElement | 通過name或index索引的getter、checkValidity() |
HTMLSelectElement | getter、setter creator、item()、namedItem()、labels、selectedOptions及各種validate接口函數(shù) |
HTMLOptionElement | 構(gòu)造器new Option() |
HTMLInputElement | files、height、indeterminate、list、valueAsDate、valueAsNumber、width、stepUp()、stepDown()、labels、文本選取區(qū)域API及各種validate接口函數(shù) |
HTMLTextAreaElement | textLength、labels、文本選取區(qū)域API及各種validate接口函數(shù) |
HTMLButtonElement | labels及各種validate接口函數(shù) |
HTMLLabelElement | control |
HTMLFieldSetElement | type、elements及各種validate接口函數(shù) |
HTMLAnchorElement | relList、text |
HTMLLinkElement | relList |
HTMLAreaElement | relList |
HTMLImageElement | 構(gòu)造器new Image()、naturalWidth、naturalHeight、complete |
HTMLObjectElement | contentWindow、legacy caller及各種validate接口函數(shù) |
HTMLMapElement | images |
HTMLTableElement | createTBody() |
HTMLIFrameElement | contentWindow |
此外:
HTMLLinkElement和HTMLStyleElement實(shí)現(xiàn)了CSSOM中的LinkStyle接口
HTMLAnchorElement、HTMLLinkElement和HTMLAreaElement實(shí)現(xiàn)了URLUtils接口
5.6 廢棄接口在HTML5中已被廢棄的屬性,其對(duì)應(yīng)IDL屬性接口也將被廢棄。如bgColor已被廢棄,那么HTMLBodyElement之上的IDL屬性接口bgcolor也被廢棄
在HTML5中已被廢棄的元素,其對(duì)應(yīng)接口也被廢棄,包括HTMLAppletElement, HTMLFrameSetElement, HTMLFrameElement, HTMLDirectoryElement及HTMLFontElement、HTMLBaseFontElement
由于HTML解析器將isindex替代為其他元素了,HTMLIsIndexElement接口被廢棄
一些成員屬性從HTMLDocument接口移動(dòng)到了Document接口,因此在原來的HTMLDocument下被廢棄:anchors和applets。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/49556.html
摘要:具體的語義化標(biāo)簽探析本文主要是為了探析部分標(biāo)簽在語義化中的差別。同時(shí)也探索新加入的語義化標(biāo)簽。英文意思為,作用是定義列表中的項(xiàng)目。強(qiáng)調(diào)標(biāo)簽說明在上面的介紹中,已經(jīng)介紹了和,個(gè)中差別,看英文既能分辨。 什么是HTML語義化 HTML語義化就是根據(jù)具體內(nèi)容,選擇合適的標(biāo)簽進(jìn)行代碼的編寫。便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼,同時(shí)讓搜索引擎的爬蟲能更好的識(shí)別。 為什么要語義化 有利于SEO:搜...
摘要:該區(qū)域代表可以被所控制的畫布。那么現(xiàn)在第二個(gè)問題,識(shí)別該文檔,這或許不是大部分用戶的需求,但小部分用戶并不意味著人數(shù)少。因此一個(gè)基于的請(qǐng)求于標(biāo)準(zhǔn)內(nèi)提出。 前言 作為程序員,技術(shù)的落實(shí)與鞏固是必要的,因此想到寫個(gè)系列,名為 why what or how 每篇文章試圖解釋清楚一個(gè)問題。 這次的 why what or how 主題:現(xiàn)在幾乎所有人都知道了 HTML5 ,那么 H5 到底相...
閱讀 2649·2019-08-30 15:53
閱讀 2875·2019-08-29 16:20
閱讀 1084·2019-08-29 15:10
閱讀 1022·2019-08-26 10:58
閱讀 2195·2019-08-26 10:49
閱讀 633·2019-08-26 10:21
閱讀 705·2019-08-23 18:30
閱讀 1638·2019-08-23 15:58