JavaScript BOM对象-frames框架集合


window整个浏览器窗口,但是与其中包含的内容无关。当页同中使用框架时,每个框架都会有自己的window对象,这些框架的window对象会被存放在frames集合中,即:浏览器窗口对象的window.frames属性中,并可以通过下标或框架名进行索引。


  1. frames属性
  2. 框架间的访问

1. frames属性

frames属性会以集合的方式返回当前窗口中包含的框架。

frameList = window.frames;

frameList是一个frame对象的列表。它的类似于数组,有length属性且可以通过[i]的形式访问。


2. 框架间的访问

2.1 框架内window对象的访问

对于如下一个框架结构:

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<frameset rows="300,*">
  <frame src="topFrame.html" name="topFrame" />
  <frameset cols="40%,60%">
    <frame src="leftFrame.html" name="leftFrame" />
    <frame src="http://niefengjun.cn" name="bottomFrameme" />
  </frameset>
</frameset>
</html>

在上面示例中,可以在任意一个框架的页面中,使用window.frames[i]window.frames["name"]来访问框架中的window对象,window.frames属性在框架的三个页面中其数据相同。

window对象中还有一个top属性用于索引框内页面的父页面,top.frames[i]top.frames["name"]同样可以访问框架中的window对象。

在浏览器环境中,window对象是Global全局对象,frames属性可以直接访问,通过该属性对象也可以访问框架中的window对象。

如,访问示例中的topFrame框架,我们可以使用以下几种方式:

window.frames[0];
window.frames["topFrame"];
top.frames[0];
top.frames["topFrame"];
frames[0];
frames["topFrame"];


2.2 parentself属性

top属性始终指向框架内子页面的上级window对象,访问上级window对象也可以使用parent属性。parent属性不同于top属性,当页面不存在上级window对象时,将指向当前window对象。

为了加以区分,访问当前页面的window对象,可以使用self属性,这个属性始终指向当前页面的window对象。

topparentself三个属性之间有相似之处,但三者是为不同目的而设计的。在使用时应该充分了解这几个属性的关系与作用,以便正确的访问指定的window对象。