理解Firefox - 第二章 从DOM出发 (二)

xiaoxiao2022-06-11  34

2.2  如何使用DOM

DOM标准定义了很多API,http://www.w3.org/TR/DOM-Level-3-Core/core.html

在Mozilla中,DOM内核接口提供如下:idl是interface文件后缀。

sunlit@ubunt:~/mozilla-central/dom/interfaces/core$ ls Makefile.in                  nsIDOMDOMLocator.idl nsIDOM3Attr.idl              nsIDOMDOMStringList.idl nsIDOM3Document.idl          nsIDOMElement.idl nsIDOM3Node.idl              nsIDOMEntity.idl nsIDOM3Text.idl              nsIDOMEntityReference.idl nsIDOM3TypeInfo.idl          nsIDOMNamedNodeMap.idl nsIDOMAttr.idl               nsIDOMNameList.idl nsIDOMCDATASection.idl       nsIDOMNode.idl nsIDOMCharacterData.idl      nsIDOMNodeList.idl nsIDOMComment.idl            nsIDOMNodeSelector.idl nsIDOMDocumentFragment.idl   nsIDOMNotation.idl nsIDOMDocument.idl           nsIDOMNSDocument.idl nsIDOMDocumentType.idl       nsIDOMNSEditableElement.idl nsIDOMDOMConfiguration.idl   nsIDOMNSElement.idl nsIDOMDOMErrorHandler.idl    nsIDOMProcessingInstruction.idl nsIDOMDOMError.idl           nsIDOMText.idl nsIDOMDOMException.idl       nsIDOMUserDataHandler.idl nsIDOMDOMImplementation.idl  nsIDOMXMLDocument.idl

2.2.1 创建DOM对象(树)

var doc = document.implementation.createDocument("", "", null); var peopleElem = doc.createElement("people"); var personElem1 = doc.createElement("person"); personElem1.setAttribute("first-name", "eric"); personElem1.setAttribute("middle-initial", "h"); personElem1.setAttribute("last-name", "jung");

如果你熟悉ActiveX,那就基本原样照办。不熟悉没问题,照猫画虎就可以了。创建文档、然后元素成树。

唯一要注意的是如果使用Sarissa,那就要用Sarissa创建文档,否则支持不了。

2.2.2 从文件中读数据到DOM,或者动态创建数据

在nsIDOMXMLDocument.idl里面提供了load方法,使用myXML.load之类的命令很容易读取数据。或者像上面的例子慢慢设置。load默认的读取数据方式是异步。

2.2.3 可以用了,保存数据和其他

现在你可以利用DOM丰富的API了。可以把树转换、保存成XML等等。

有一篇很好的文章(https://developer.mozilla.org/cn/使用Javascript和DOM_Interfaces来处理HTML)解释了DOM在动态内容的功能。

 

至于DOM如何实现,就不在这里罗嗦了。在了解了DOM标准和接口 后,源代码很容易看。

 

 

转载请注明原文地址: https://www.6miu.com/read-4931253.html

最新回复(0)