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