在各个版本浏览器中,文档对象模型都有其特殊的地方。一般来说,每发布一个新版本的浏览器,浏览器厂商都会以各种方式扩展document 对象,新版本修订了老版本的程序错误,同时添加了对象的属性、方法及事件处理程序等,不断扩充原有的功能。
当然,从新对象模型可以更快捷地执行更多任务的技术层面上来看,每次的浏览器版本更新绝对不是一件坏事,但不同浏览器的对象模型朝着不同方向发展,却给Web 程序员将应用程序在不同浏览器之间移植方面带来了相当的难度,导致Web 应用程序的跨平台性较差。
下面讨论文档对象模型发展过程中主要浏览器版本的对象模型,特别强调各种版本的文档对象模型的新特性以及它们和常用编程任务之间的关系。
1.Netscape Navigator 浏览器
基本对象模型最先在 NN2 种获得支持,虽然功能很有限,这也为文档对象模型的发展奠定了坚实的基础。
在NN3 中通过访问嵌入对象、Applet 应用程序、插件等,使第一个简单、类似于DHTML 的应用程序的出现成为可能,且脚本语言能访问更多的文档属性和方法。
NN3 中的文档对象模型如图所示,其中灰色框内为NN3 中document 对象新增内容。
NN3 中增加的最重要对象就是images 对象,可通过document.images 得到文档的一个image 数组,然后通过一下语句进行操作:document.images[n].src=…
images 对象的大多数属性都是只读的,而src 可读可写,典型应用是图片翻转程序,如下代码所示:[code]
NN4 中的文档对象模型如图所示,其中灰色框内为NN4 中document 对象新增内容。
新增对象 layer(层)是一个容器,可以容纳自己的文档,从而拥有自己的document 对象。
当然,这个文档从属于主文档。JavaScript 通过操作它的属性和方法,可以动态改变layer 的尺寸、位置、隐藏与否等。如果有多个层,还可以更改其堆栈顺序,并且首次允许层覆盖文档中的其它元素。
假如需要访问layer 标记为“MyLayer”的层中标记为“MyPicture”的image 对象的src 属性,可通过如下方式访问:document.MyLayer.document.MyPicture.src
但是在W3C DOM 中,layer 对象没被吸收为标准对象,而是用定位div 对象和span 对象代替,同时赋予了新的属性、方法和事件处理程序。在NN4 中,document.layers[]返回文档的layers[]数组,而在其它浏览器中,则返回undefined,这也提供了一个鉴别NN4 浏览器的有效方法。
tags[]属性可以在全局范围内操作某个HTML 元素对象的样式,语法如下:document.tags.tagName.propertyName
其中,tagName 指HTML 元素对象,propertyName 指要访问的CSS 属性。
例如:<h1 class="site-name title">会员管理系统</h1>
如果要改变
document.tags.h1.color="red"
NN6 是Netscape 浏览器发展的里程碑,它向前兼容DOM Level 0,也即W3C 的DOM标准,并合并了早期文档对象模型中被广泛使用的特性。
同时,它也部分遵循DOM Level 1 和DOM Level 2 标准,主要包括W3C 对于HTML、XML、CSS 和事件的对象模型。
同时它放弃了NN4 支持但差不多是其特有的扩展内容,如标记以及对应的JavaScript 对象,打破了windows 程序“向下兼容”的规律,导致很多老版本浏览器上支持的脚本在NN6 中无效。