大家一起學——DOM概述

來源:互聯網
上載者:User

什麼是DOM

DOM:Document Object Model(文件物件模型)是W3C組織推薦的處理可擴充置標語言的標準編程介面。Document Object Model的曆史可以追溯至1990年代後期微軟與Netscape的“瀏覽器大戰”,雙方為了在JavaScript與JScript一決生死,於是大規模的賦予瀏覽器強大的功能。微軟在網頁技術上加入了不少專屬事物,計有VBScript、ActiveX、以及微軟自家的DHTML格式等,使不少網頁使用非微軟平台及瀏覽器無法正常顯示。DOM即是當時蘊釀出來的傑作。詳細請參百度百科 http://baike.baidu.com/view/14806.htm

DOM有什麼用

DOM的作用是將標記文檔(如 HTML, XML)封裝成對象,並將標記型文檔中的所有內容(標籤,文本,屬性等)都封裝成對象。封裝成對象的目的是為了更為方便的操作這些文檔,以及文檔中的所有內容。因為對象的出現,就可以有屬性和行為被調用。

文件物件模型

文檔:標記型文檔(HTML, XML)。

對象:封裝了屬性和行為的執行個體,可以被直接調用。

模型:所有標記型文檔都具備一些共性的一個體現。

介紹完DOM,現在來講講它的工作原理吧!

DOM這種技術是如何對標記型文檔進行操作的呢?

要操作標記型文檔,就必須要先對其解析。下面讓我們看看DOM解析流程的圖,


從這張圖我們可以看到,DOM技術的解析方式是將標記型文檔解析成一棵DOM樹,並將樹中的內容都封裝成節點對象。這完全就是一種物件導向的設計的一種方法,萬物
皆對象!

不得不誇一下前人的遠見。

任何事物具有兩面性,DOM技術也不例外。

好處:可以對樹中的節點進行任意的操作,比如(增 刪 改 查)

弊端:這種解析方式需要將整個標記文檔載入進記憶體,意味這如果標記型文檔體積過大,較為浪費記憶體空間。

這時強大的前人又有新招啦!

正所謂高手在民間,一些民間組織定義了一種叫SAX解析方式,

什麼叫SAX呢?

這是一基於事件驅動的“推”模型,雖然它不是W3C標準,但它卻是一個得到了廣泛認可的API。SAX解析器不像DOM那樣建立一個完整的文檔樹,而是在讀取文檔時啟用一系列事件,這些事件被推給事件處理器,然後由事件處理器提供對文檔內容的訪問。

SAX與DOM對比

與DOM相比,SAX解析器能提供更好的效能優勢,它提供對XML文檔內容的有效低級訪問。SAX模型最大的優點是記憶體消耗小,因為整個文檔無需一次載入到記憶體中,這使SAX解析器可以解析大於系統記憶體的文檔。另外,你無需像在DOM中那樣為所有節點建立對象。最後,SAX“推”模型可用於廣播環境,能夠同時註冊多個ContentHandler,並行接收事件,而不是在一個管道中一個接一個地進行處理。

SAX的缺陷

SAX的缺點是你必須實現多個事件處理常式以便能夠處理所有到來的事件,同時你還必須在應用程式代碼中維護這個事件狀態,因為SAX解析器不能交流元資訊,如DOM的父/子支援,所以你必須跟蹤解析器處在文檔層次的哪個位置。如此一來,你的文檔越複雜,你的應用邏輯就越複雜。雖然沒有必要一次將整個文檔載入到記憶體中,但SAX解析器仍然需要解析整個文檔,這點和DOM一樣。

這裡不打算細將SAX後面學到XML時會詳細分析的。

DOM的三種模式:

DOM1:將HTML文檔封裝成對象。

DOM2:加入了一些新功能,比如解析名稱空間。

什麼叫名稱空間呢?別急,我會為你詳細說明:

當出現同名的標籤,標籤代表的含義不同時,容易出現衝突,這時我們可以定義一個所屬,不同所屬儲存同名而不同含義的標籤。這相當於java的兩個同名.class需要放在兩個不同的包裡。

文法如下,沒table標籤定義一個所屬並取名,這個所屬就是名稱空間

<html  xmlns=”A”>

<table></table>

</html>

<html  xmlns=”B”>

<table></table>

</html>

DOM3:將XML文檔封裝成對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.