框架是一种可以操作的特殊窗口,当一个浏览器窗口包含多个框架的时候,可以使用window.fames[]对每个隔开的窗口对象进行访问。window.fames[]是一个数组,包含了窗口中的每个框架。本文主要介绍框架的访问、嵌套框架(内联框架)、框架间的交叉通信、嵌套框架间的交叉通信等内容。
访问框架
本节给出一个访问框架的实例。框架采用了多级嵌套形式,以使读者更好地理解框架的命名与引用。
要点
本节代码主要使用了框架命名与引用的相关方法,主要功能和用法如下。
- 在HTML和JavaScipt 中,框架是一种可以进行操作的窗口,当一个浏览器窗口包含多个框架的时候,可以使用 window.fiames[]对每个隔开的窗口对象进行访问。
- window.frames[]是一个数组,包含了窗口中的每个框架。Frame 对象具有以下公用属性:firames[]是一个当前窗口包含的所有 fame 对象组成的数组;length 属性表示窗口中 frame 的数量,可以与 window.frames.length值相同;name 属性表示窗口的当前名称,是可读写的。
- parent属性表示对父窗口的引用;self属性表示对当前窗口的引用;top属性表示对上一窗口的引用,通常与父窗口相同,除非<fiame>载入的文档包含多个窗口。
- parent 允许一个窗口确定其父窗口。顶层窗口包含其他所有窗口,可以使用 top 的top.fiames.length 形式操作顶层窗口。除非使用了嵌套框架,否则,顶层窗口和父窗口实际是同一对象。
- 要访问一个确定的窗口,可以使用其名称或在数组中的序号,例如,使用"parent.fiames[0].name”,可以引用第一个框架的名称。如果当前在某一框架内,还可以使用 parent.fiamel或者parent.frames["fiamel"]访问另一个框架。因为框架是包含窗口的所以,可以使用所有的 Window 和 Document方法对其进行操作。
访问框架.main.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>主框架</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<frameset rows="33%,*,33%">
<frame src="访问框架.more.htm" name="frame1" id="frame1">
<frame src="访问框架.js.htm" name="frame2" id="frame2">
<frame src="访问框架.js.htm" name="frame5" id="frame5">
</frameset>
</html>
访问框架.js.htm:
<script type="text/javascript">
<!--
var msg="";
var i = 0;
msg += "<h2>框架窗口: "+ window.name + "</h2><hr>";
//显示自身的相关信息
if (self.frames.length> 0)
{ //显示框架总数
msg += "self.frames.length = " + self.frames.length + "<br>"
//显示每个框架的名称
for (i=0; i < self.frames.length; i++)
msg += "self.frames["+i+"].name = "+ self.frames[i].name + "<br>";
}
else
//如果没有框架,则显示相应的信息
msg += "当前窗口不包含框架<br>";
msg+="<br>";
//显示父框架的相关信息
if (parent.frames.length> 0)
{ //显示框架总数
msg += "parent.frames.length &#