成都心情

  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  98 随笔 :: 2 文章 :: 501 评论 :: 1 Trackbacks

写作本文的目的是为了能让自己对基础的概念更加熟悉,尽管近期都在关注Flex领域,不过得承认,HTMLJavaScript方面的能力很重要,并不是所有的开发者都认同我的说辞:“复杂的业务我倾向用Flex实现。”——rosen jiang

 

什么是DOM

从我参加工作开始嘴上就老是挂着DOM,起先认为DOM只是针对XML领域,后来才知道HTML也是一种DOM结构。W3CDOM解释是:文档对象模型(DOM)是一种平台、语言无关的接口,允许程序和脚本动态访问和更新其内容、结构和样式。处理后的文档可以再次处理,并且处理的结果可以重新呈现在页面上。

 

什么是文档(Ducument)

文档就是一段合法的XML串或一段HTML,在概念上文档应该有根以便能访问到里面的数据。

 

DOM的级别

DOM Level 1DOM Level 1第一版又分成DOM Level 1 CoreDOM Level 1 HTML

DOM Level 1 Core定义了一组最基本的访问和操作文档的对象和接口,是一种满足所有软件开发者和web脚本开发者访问和操作HTMLXML的功能性规范。

DOM Level 1 HTML继承了DOM Level 1 Core,主要描述HTML文档方面的对象和方法。一般来说,DOM Level 1 HTML要能实现维护结构化的文档、元素和属性。

 

DOM Level 2DOM Level 2又分成DOM Level 2 CoreDOM Level 2 ViewsDOM Level 2 EventsDOM Level 2 StyleDOM Level 2 Traversal and Range SpecificationDOM Level 2 HTML。在这里我只关注CoreHTML

    DOM Level 2 CoreLevel 1的定义一样,并基于Level 1构建。

DOM Level 2 HTML基于DOM Level 2 Core构建,且不与DOM Level 1 HTML兼容,DOM Level 2 HTML也是目前HTML 4.01XHTML 1.0所采用的级别。

 

DOM Level 3,在这里就不多描述了,目前还没有DOM Level 3 HTML规范,我看DOM Level 3 Core的描述还是针对HTML 4.01的,难道是在等传说中的HTML 5?对于HTML 5的相互争论是可以的,奉劝各大浏览器厂商不要把头打破了。

      

HTML DOM对象包括所有的标签,例如<a>就是一个DOM对象,HTML中的<a>标签(元素)实际上是实现了DOM Level 2 HTMLHTMLAnchorElement接口,再比如<div>标签(分组元素)实现了HTMLDivElement接口。既然DOM Level 2 HTMLHTML 4.01关系紧密,那么可以存在:document.createElement(“div”)来创建DIV对象。可参考HTML 4.01规范来找寻其支持的元素。对于span这样的分组元素在DOM Level 2 HTML中是实现了HTMLElement接口,与span一样实现HTMLElement接口的元素是:

  • 特殊: SUB, SUP, SPAN, BDO
  • 字体: TT, I, B, U, S, STRIKE, BIG, SMALL
  • 表达: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ACRONYM, ABBR
  • 列表: DD, DT
  • NOFRAMES, NOSCRIPT
  • ADDRESS, CENTER

这里面最特殊的DOM对象是document,它实现了HTMLDocument接口且没有对应的HTML标签,HTMLDocument是整个HTML层次的根并能处理HTML的所有内容。

 

除了内置与HTML对应的对象外,HTML DOM(浏览器)中还内置了JavaScript对象,他们是:WindowNavigatorScreenHistoryLocation,可阅读HTML DOM 参考手册,里面解释得很清楚。需要说明的是:Window 对象表示一个浏览器窗口或一个框架。在客户端 JavaScript 中,Window 对象是全局对象,所有的表达式都在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。例如,可以只写 document,而不必写 window.document,还有用得最多的alert()方法,也不用写Window.alert()

 

总结完毕。


请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处: http://www.blogjava.net/rosen

posted on 2009-09-13 11:02 Rosen 阅读(6327) 评论(3)  编辑  收藏 所属分类: Java EE 表现层及容器

评论

# re: HTML DOM、内置对象总结[未登录] 2009-09-17 22:42 竹十一
偷偷写B 文,也不告诉俺们,鄙视~  回复  更多评论
  

# re: HTML DOM、内置对象总结 2009-09-18 09:50 Rosen
@竹十一
这点水文,不值得通知,太水了。  回复  更多评论
  

# re: HTML DOM、内置对象总结 2012-07-21 10:55 斤斤计较
有用,基础  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: