日期:2014-04-10  浏览次数:20523 次

  FRAME间的脚本控制

  使用JavaScript,我们既可以从创建窗口的页面访问那个窗口,也可以从这个窗口创建的窗口访问它。另一方面,FRAMESET中的文档(包括FRAMESET本身)总是可以访问和操纵其中每个的JavaScript函数和变量。比如说,第三个FRAME中有函数sayGobble(vol),那么在其他FRAME中就可以使用parent.FRAMEs[2].sayGobble(vol)来引用它。同样,FRAMESET页面中的变量myName可以被任何FRAME以parent.myName="Imelda"的命令进行设置。

  不管在其他FRAME中的内容如何,在静态FRAME或者FRAMESET中的函数和变量始终保持可用。这个特征非常有价值,不仅可以将通用函数保存在其中从而压缩代码,而且,还可以实现页面间转换时的状态保持。

  下面的FRAMESET页面只有一个FRAME叫做query.htm,并且定义了一个JavaScript变量myword:

<HTML><HEAD>
<TITLE>Passing data</TITLE>
<SCRIPT LANGUAGE="JavaScript"><!--
myword="";
//--></SCRIPT>
</HEAD>
<FRAMESET rows="*,1" FRAMEBORDER=no>
 <FRAME name="active" src="query.htm">
 <FRAME name="dummy">
</FRAMESET>
</HTML>


  页面query.htm有一个文本输入框以及一个到result.htm的链接,链接的onClick事件将设置FRAMESET页面的myword变量为文本输入框的内容。代码如下:

<HTML><HEAD></HEAD>
<BODY>
<FORM name="myForm">
<INPUT type=text size=12 name="myText">
<P>
<A onClick="parent.myword=myText.value"
 href="result.htm">See it in yellow on blue!</A>
</FORM>
</BODY></HTML>


  页面result.htm取回并打印出myword的数值,代码是:

<HTML>
<HEAD></HEAD>
<BODY bgcolor=#0000cc vlink=#99ffff>
<FONT size=+3 color=#ffff00>
<SCRIPT language="JavaScript"><!--
document.write(parent.myword);
//--></SCRIPT>
</FONT><P>
<A href="query.htm">Do it again</a>
</BODY></HTML>


  这个例子很有实用价值。比如说,你可以设定访问者按一定的次序打开页面,收集用户信息,最后定制出用户特制的显示内容。

  谈到状态维护功能,这个方法不会比使用cookie或CGI更好,因为当FRAMESET重载或者退出时,变量值就丢失了。但是,它不要求服务器端响应,也不存在安全问题,因此还是可以小试一把的。


  下一页:用脚本控制浮动FRAME