HTML DOM架构研究

HTML DOM架构研究
2010年07月08日
  W3C的DOM有2个版本:核心DOM和HTML DOM。核心DOM是一个语言独立和模块独立的API,它能够在任何语言中实现,而不仅仅是在JavaScript中实现,例如JAVA DOM实现,XML DOM实现等。HTML DOM是网页的面向对象的层次式的视图,其中的对象映射了不同的HTML元素,例如HTMLParagraphElement代表了p标签。其实所谓的DOM就是W3C定义的一套接口(interface),每个接口定义了一些属性和方法,具体实现由浏览器实现。而HTML DOM其实就是继承了核心DOM的接口,并在此基础上添加HTML所独有的属性和方法,例如id。
  DOM中最主要的数据类型是node 对象,node对象 代表文档树中的一个单独的节点,一共有12种节点类型 , 当然最常见的是元素节点、属性节点、文本节点。Node对象定义了一些通用的属性和方法,如nodeName, nodeType, nodeValue等属性以及appendChild()等方法。同时W3C还为元素节点专门定制了一个element 接口,该接口继承了node接口,同时又专门为元素节点添加了一些属性和方法,例如tagName。
  现在回到HTML DOM中来,上面说了,HTML DOM是继承了核心DOM的,例如,HTML DOM的元素节点HTMLElement 是继承自核心DOM的element接口,因此除了核心DOM element的属性和方法,HTMLElement还添加了一些HTML里常用的一些属性,如id, title, lang, dir, className(就是class,因为class是JavaScript保留关键字,所以就改用className代替),除了这些标准的属性,各个浏览器还添加了一些非标准的属性,如最常用的innerHTML属性,查看所有 。而几乎所有的HTML都继承了HTMLElement,这也是为什么我们可以用属性的方式访问id等,例如var hello = document.getElementById("abc"); var id = hello.id。
  HTML DOM里另外一个重要的元素HTMLDocument 是继承于核心DOM的Document 接口,并添加了一些HTML相关的属性及方法:document.images, document.forms, document.body, document.domain等属性以及doucment.open(), document.write等方法。其实HTML DOM为每个HTML标签都创建了对象的接口,如HTMLDivElement, HTMLTableElement,所有这些元素节点基本上都继承了HTMLElement接口,有些元素在HTMLElement基础上作了扩展,如a标签添加了href属性。
  当然各个浏览器在实现DOM时并没有完全按照标准来实现的,例如IE添加了大量的私有属性,同时好多标准属性它也不支持;Firefox除了支持标准的DOM之外,还对DOM作了一定的扩展,其实也是私有属性。例如innerHTML属性虽然不是标准属性,但所有的浏览器都支持该属性。目前来看消除浏览器差异的最好的方法还是使用jQuery 等类似的JS框架来编程,有JS框架来屏蔽差异性。
  参考文献:
  1. Document Object Model HTML
  2. Document Object Model Core
  3. XML DOM 教程
  4. HTML DOM 教程
  5. W3C Document Object Model (DOM)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值