用脚本控制浮动FRAME 用脚本控制普通FRAME与浮动FRAME的方法基本相同,唯一的差别是浮动FRAME按<IFRAME>出现的顺序定义索引位置。如果FRAMEs.length不为0,就表示可以安全地处理浮动FRAME。比如说,在下面的代码中,如果存在叫做floater的浮动FRAME,链接就指向它;否则就指向"_top":
<IFRAME name="floater" src="../../trog.htm" width=200 height=200></IFRAME>
<A href="../../grot.HTML" target="floater" onClick="if (!self.FRAMEs.length) this.target='_top'">See grot.htm</A> |
带有浮动FRAME的Web页面是FRAME文档的parent窗口,因此,多个浮动FRAME仍然可以通过parent.FRAME数组去访问每一个FRAME。
预防脚本编程错误 尽管FRAME是HTML的一个稳定规范说明,但DOM模型只把它们当做HTML元素而不是窗口,因此围绕FRAME的脚本编程并不是能很周全地定义。这个不足导致了当装载FRAME时会发生一些脚本执行方面的冲突。
立即修改FRAME内容的脚本经常会产生错误。原因在于:浏览器通常是先执行脚本命令,然后在按照src所示装入页面内容。
解决方法很直接,就是判断FRAME内容是否装载完毕。有一个好的处理技巧是以HTML页面开始所有的FRAME,由它象主FRAMESET报告装载请看。比如说,有一个FRAMESET页面,要等装载完所有的FRAME后才能执行函数goToIt(),那么就将下面的JavaScript程序段放进FRAMESET文档中:
countDown=FRAMEs.length; function soundOff() { countDown--; if (countDown==0) { goToIt(); } } |
然后,在每个FRAME页面的<BODY>标记中设置上onLoad="parent.soundOff()"。当FRAME页面装载并执行soundOFF()后,等到countDown 为0时,就表示FRAME完全装载完毕。
总结 FRAME是双刃剑,使用不好会造成混乱的站点结构和外观,使用得当将大大方便用户的操作方式以及形成清晰的页面风格。相信你看完本文后,会对FRAME有了更亲切的认识。