写作本文的目的是为了能让自己对基础的概念更加熟悉,尽管近期都在关注Flex领域,不过得承认,HTML和JavaScript方面的能力很重要,并不是所有的开发者都认同我的说辞:“复杂的业务我倾向用Flex实现。”——rosen jiang
什么是DOM?
从我参加工作开始嘴上就老是挂着DOM,起先认为DOM只是针对XML领域,后来才知道HTML也是一种DOM结构。W3C多DOM的解释是:文档对象模型(DOM)是一种平台、语言无关的接口,允许程序和脚本动态访问和更新其内容、结构和样式。处理后的文档可以再次处理,并且处理的结果可以重新呈现在页面上。
什么是文档(Ducument)?
文档就是一段合法的XML串或一段HTML,在概念上文档应该有根以便能访问到里面的数据。
DOM的级别
DOM
Level 1,DOM
Level 1第一版又分成DOM
Level 1 Core和DOM
Level 1 HTML。
DOM Level 1 Core定义了一组最基本的访问和操作文档的对象和接口,是一种满足所有软件开发者和web脚本开发者访问和操作HTML、XML的功能性规范。
DOM Level 1 HTML继承了DOM Level 1 Core,主要描述HTML文档方面的对象和方法。一般来说,DOM Level 1 HTML要能实现维护结构化的文档、元素和属性。
DOM
Level 2,DOM
Level 2又分成DOM
Level 2 Core、DOM
Level 2 Views、DOM
Level 2 Events、DOM Level 2 Style、DOM
Level 2 Traversal and Range Specification、DOM
Level 2 HTML。在这里我只关注Core和HTML。
DOM Level 2 Core和Level 1的定义一样,并基于Level 1构建。
DOM Level 2 HTML基于DOM Level 2 Core构建,且不与DOM Level 1 HTML兼容,DOM Level 2 HTML也是目前HTML 4.01和XHTML 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 HTML的HTMLAnchorElement接口,再比如<div>标签(分组元素)实现了HTMLDivElement接口。既然DOM Level 2 HTML和HTML 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对象,他们是:Window、Navigator、Screen、History、Location,可阅读HTML DOM 参考手册,里面解释得很清楚。需要说明的是:Window 对象表示一个浏览器窗口或一个框架。在客户端 JavaScript 中,Window 对象是全局对象,所有的表达式都在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。例如,可以只写 document,而不必写 window.document,还有用得最多的alert()方法,也不用写Window.alert()。
总结完毕。
请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:
http://www.blogjava.net/rosen