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

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标准和接口 后,源代码很容易看。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值