1:什麼是HTML DOM
HTML 文檔對象模型(HTML Document Object Model)定義了訪問和處理 HTML 文檔的標準方法。
2:HTML DOM組成
DOM 被分爲不同的部分(核心、XML及HTML)和級別(DOM Level 1/2/3):
Core DOM
定義了一套標準的針對任何結構化文檔的對象
對應的WEBKIT源碼中路徑:WebKit\WebCore\dom
XML DOM
提供針對XML的高層的文檔處理方法。
對應的WEBKIT源碼中路徑:WebKit\WebCore\xml
HTML DOM
提供針對HTML的高層的文檔處理方法。
對應的WEBKIT源碼中路徑:WebKit\WebCore\html
可以用下圖標示其組成:
3:HTML DOM的層次
層次結構大致可以使用下面這張圖來標示:
在WEBKIT中的節點可以分爲兩類:
1:不能擁有子節點的節點(字符數據),那麼這類節點直接派生之Node.
2:能夠擁有子節點的,這類節點是派生之ContainerNode,ContainerNode其實也是派生之Node節點,只不過增加了擁有子節點的能力。
下面是兩個關鍵函數的實現:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
inline
Node* Node::firstChild() const { if (!isContainerNode()) return 0 ; return toContainerNode( this )->firstChild(); } inline
Node* Node::lastChild() const { if (!isContainerNode()) return 0 ; return toContainerNode( this )->lastChild(); } |
4:HTML DOM的核心接口
核心接口主要由四個部分組成:
Document(文檔)——文檔的根節點
Node(節點)——表示文檔樹的節點,是大多數接口的父接口
NodeList(節點列表)——有序節點集合(如子樹)
NameNodeMap(命名節點映射)——無序節點集合(由節點名屬性獲得的節點集)
4.1:Document
4.2:Node
4.3:NodeList
4.4NameNodeMap