JavaScript 框架集文档中对象的结构

对于单个、无框架的文档,对象模型以Window 对象开始,并将其作为对象模型层次的起始点和默认的对象而存在,实际使用过程中可忽略对该对象的引用。

对于含有多个框架的框架集文档,该框架集文档作为父窗口,且此时浏览器的标题栏显示的是框架集文档的标题。

考察如下最简单的框架集文档代码:[code]

Sample Page! [/code]每个标记都可以加载一个新的文档(当然也可引入新的框架集文档形成更为复杂的框架集文档)而产生各自的document 对象,并可通过对象之间的层次关系进行访问操作。

父子对象之间通过parent 对象进行联系,且存在top 对象指向所有框架唯一共有的顶层窗口。

图显示了上述框架集文档的结构:

在对象模型中构造一个对象的引用,首先要获得目标对象的位置信息,然后应了解用何种方法来实现该引用。在框架集文档中对框架的引用路径主要有三种:

子到父

父到子

子对子

在子到父的引用路径中,可使用parent 关键字实现;父到子的引用可直接使用对象模型层次;

而子到子的访问则需要通过top 关键字引用其共有的父对象,然后通过该父对象实现对另一框架的访问。

综合如下:this.parent; parent.frameName; top.otherFrameName.document;Frame 对象的属性和方法受标记的控制,可在此标记内设定该框架的相关信息,如框架是否有滚动条、边框的颜色等。

一般而言,在标记内应设置其ID 属性(或name 属性)以实现对象的有效引用。

在上述最简单的框架集文档中,可通过如下方法实现对框架Frame02 的frameBorder 属性的访问(假设操作焦点在Frame01 框架中):parent.document.all.Frame02.frameBorder; parent.document.getElementById("Frame02").frameBorder;在嵌套的框架集文档中,可根据对象模型层次从顶层的Window 对象开始引用并到达最终的Frame 对象,然后通过其属性和方法来操作该框架中载入的文档。

注意:如果框架集中某个框架载入了另外的框架集文档,则该框架的 top 属性属于另一个框架集文档中定义的框架集。

如果总是把top 设定为父对象,则该引用将不可实现。

实际应用中可通过判断顶级文档是否为其top 或parent 属性载入,并根据结果实施页面重定位的方法来禁止框架中载入新的框架集文档,进而解决对象引用失效的问题。