寫作本文的目的是為了能讓自己對基礎(chǔ)的概念更加熟悉,盡管近期都在關(guān)注Flex領(lǐng)域,不過得承認(rèn),HTML和JavaScript方面的能力很重要,并不是所有的開發(fā)者都認(rèn)同我的說辭:“復(fù)雜的業(yè)務(wù)我傾向用Flex實(shí)現(xiàn)。”——rosen jiang
什么是DOM?
從我參加工作開始嘴上就老是掛著DOM,起先認(rèn)為DOM只是針對XML領(lǐng)域,后來才知道HTML也是一種DOM結(jié)構(gòu)。W3C多DOM的解釋是:文檔對象模型(DOM)是一種平臺、語言無關(guān)的接口,允許程序和腳本動態(tài)訪問和更新其內(nèi)容、結(jié)構(gòu)和樣式。處理后的文檔可以再次處理,并且處理的結(jié)果可以重新呈現(xiàn)在頁面上。
什么是文檔(Ducument)?
文檔就是一段合法的XML串或一段HTML,在概念上文檔應(yīng)該有根以便能訪問到里面的數(shù)據(jù)。
DOM的級別
DOM Level 1,DOM Level 1第一版又分成DOM Level 1 Core和DOM Level 1 HTML。
DOM Level 1 Core定義了一組最基本的訪問和操作文檔的對象和接口,是一種滿足所有軟件開發(fā)者和web腳本開發(fā)者訪問和操作HTML、XML的功能性規(guī)范。
DOM Level 1 HTML繼承了DOM Level 1 Core,主要描述HTML文檔方面的對象和方法。一般來說,DOM Level 1 HTML要能實(shí)現(xiàn)維護(hù)結(jié)構(gòu)化的文檔、元素和屬性。
DOM Level 2,DOM Level 2又分成DOM Level 2 Core、DOM Level 2 Views、DOM Level 2 Events、DOM Level 2 Style、DOM Level 2 Traversal and Range Specification、DOM Level 2 HTML。在這里我只關(guān)注Core和HTML。
DOM Level 2 Core和Level 1的定義一樣,并基于Level 1構(gòu)建。
DOM Level 2 HTML基于DOM Level 2 Core構(gòu)建,且不與DOM Level 1 HTML兼容,DOM Level 2 HTML也是目前HTML 4.01和XHTML 1.0所采用的級別。
DOM Level 3,在這里就不多描述了,目前還沒有DOM Level 3 HTML規(guī)范,我看DOM Level 3 Core的描述還是針對HTML 4.01的,難道是在等傳說中的HTML 5?對于HTML 5的相互爭論是可以的,奉勸各大瀏覽器廠商不要把頭打破了。
HTML DOM對象包括所有的標(biāo)簽,例如<a>就是一個DOM對象,HTML中的<a>標(biāo)簽(元素)實(shí)際上是實(shí)現(xiàn)了DOM Level 2 HTML的HTMLAnchorElement接口,再比如<div>標(biāo)簽(分組元素)實(shí)現(xiàn)了HTMLDivElement接口。既然DOM Level 2 HTML和HTML 4.01關(guān)系緊密,那么可以存在:document.createElement(“div”)來創(chuàng)建DIV對象。可參考HTML 4.01規(guī)范來找尋其支持的元素。對于span這樣的分組元素在DOM Level 2 HTML中是實(shí)現(xiàn)了HTMLElement接口,與span一樣實(shí)現(xiàn)HTMLElement接口的元素是:
這里面最特殊的DOM對象是document,它實(shí)現(xiàn)了HTMLDocument接口且沒有對應(yīng)的HTML標(biāo)簽,HTMLDocument是整個HTML層次的根并能處理HTML的所有內(nèi)容。
除了內(nèi)置與HTML對應(yīng)的對象外,HTML DOM(瀏覽器)中還內(nèi)置了JavaScript對象,他們是:Window、Navigator、Screen、History、Location,可閱讀HTML DOM 參考手冊,里面解釋得很清楚。需要說明的是:Window 對象表示一個瀏覽器窗口或一個框架。在客戶端 JavaScript 中,Window 對象是全局對象,所有的表達(dá)式都在當(dāng)前的環(huán)境中計(jì)算。也就是說,要引用當(dāng)前窗口根本不需要特殊的語法,可以把那個窗口的屬性作為全局變量來使用。例如,可以只寫 document,而不必寫 window.document,還有用得最多的alert()方法,也不用寫Window.alert()。
總結(jié)完畢。
請注意!引用、轉(zhuǎn)貼本文應(yīng)注明原作者:Rosen Jiang 以及出處: http://m.tkk7.com/rosen
Powered by: BlogJava Copyright © Rosen