导航
  • 全部
...

关于frameset中遇到的奇怪问题

carlxuan 2006-09-25 06:03:10
小弟,最近编了一个frameset网页,其中主页(frameSet.html)代码为:
<html>
<frameset rows="100,*">
<frame src="a.html" name="topFrame"></frame>

<frameset cols="200,*">
<frame src="b.html" name="leftFrame"></frame>
<frame src="c.html" name="rightFrame"></frame>
</frameset>

</frameset>
</html>

其中a.html:
<script>
function add(){
alert(parent.frames[0].name);

top.frames[1].document.getElementsByTagName("input")[0].value = self.document.getElementsByTagName("input")[0].value;
}

function open1(){

alert(parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent==top);
alert(parent.parent.parent.parent.parent.parent.frames[0].name);
alert(parent.frames[1].name);
alert(parent.frames[2].name);
window.open("b.html","topFrame");

}
</script>

<input type="text" name="atext">
<input type="button" value="aClick" onclick="add()">
<input type="button" value="window1" onclick="open1()">


b.html的代码:
<script>
function add(){
alert(parent==top);
alert(parent.frames[0].name);
alert(parent.frames[1].name);
alert(parent.frames[3].name);
top.frames[0].document.getElementsByTagName("input")[0].value = self.document.getElementsByTagName("input")[0].value;
}
</script>

<input type="text" name="btext">
<input type="button" value="bClick" onclick="add()">


c.html的代码为:
<script>
function add(){
alert(top.frames[1].name);
top.getElementsByTagName("input")[0].value = self.document.getElementsByTagName("input")[0].value;
}
</script>
<input type="text" name="ctext">
<input type="button" value="cClick" onclick="add()">


请大家注意那个b.html中我用parent=top来判断b.html的上一层是不是顶层,结果显示为true;因为我原先的框架有2层,结果parent.frames[0],parent.frames[1],parent.frames[2]竟然是a.html,b.html,c.html
我想要的结果是a.html的parent为顶层(top),b.html和c.html的parent.parent为顶层(top),(根据javascript权威指南第四版 252-253页)
哪位高手解释一下啊,我在IE和firefox中得到结果都一样啊
...全文
给本帖投票
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
carlxuan 2006-09-27
  • 打赏
  • 举报
回复
哦,那你的意思是只有把frameset.html放到另一个框架页面(比如frameset1.html)中时才需要引用b和c的parent.parent=top,是不是??
fosjos 2006-09-27
  • 打赏
  • 举报
回复
"另一个frameset和b.html,c.html的关系"
只有一个frameset.htm,这个和<frameset>没有关系

因为<frame>显示b.html,<frame>在frameset.htm页面内,所以两个页面有parent关系
不要总是扯到<frameset>
carlxuan 2006-09-27
  • 打赏
  • 举报
回复
“<frame src="a.html" name="topFrame"></frame>
这段代码形成frameset.html和a.html的parent关系
同样frameset.html和b.html,c.html也是parent关系
至于top,没有parent的页面才是top

“同一层”没有任何意义,楼主不要钻牛角尖“
刚才这位大虾把a.html和frameset.html的关系以及另一个frameset和b.html,c.html的关系也解释了,那么这两个frameset之间是什么关系呢??
carlxuan 2006-09-27
  • 打赏
  • 举报
回复
谢谢高人啊, 不过我不会给分阿,小弟刚注册的阿,呵呵(连自己有没有分都不知道啊)
fosjos 2006-09-27
  • 打赏
  • 举报
回复
这回终于说对了
<frameset>只是排版作用
<frame>和<iframe>才是子窗口的载体
carlxuan 2006-09-26
  • 打赏
  • 举报
回复
那么说来javascript权威指南第四版 253页上的图是错误了??是不是说只要任何的页面的parent就是框架的顶层(top)呢??
fosjos 2006-09-26
  • 打赏
  • 举报
回复
parent是window层面的parent

你说的parent是同一个window下element之间的parentNode关系,是一个页面内部的结构层次,
结构上是否同一级没有实际意义
carlxuan 2006-09-26
  • 打赏
  • 举报
回复
谢谢高手,不过我有些不明白阿,b和c的parent是和a在同一级的阿,应该是b和c的parent.parent才是a.parent啊,为什么a,b,c是同一级的,而且在frameSet.html中有两个frameset啊,难道这个不算是嵌套框架吗,高手解释一下啊
Apq001 2006-09-26
  • 打赏
  • 举报
回复
因为a,b,c的parent均为frameSet。a,b,c是位于同一级的。
要想得到你想要的效果,用frame是不行的,应该在frameSet中去掉 b和c,而在a里使用iframe添加b、c
fosjos 2006-09-26
  • 打赏
  • 举报
回复
javascript权威指南应该没问题
楼主还没理解

<frame src="a.html" name="topFrame"></frame>
这段代码形成frameset.html和a.html的parent关系
同样frameset.html和b.html,c.html也是parent关系
至于top,没有parent的页面才是top

“同一层”没有任何意义,楼主不要钻牛角尖
carlxuan 2006-09-26
  • 打赏
  • 举报
回复
呵呵,大概吧,我还以为坚果的东西总是那么可靠呢,谢谢兄台啦
Apq001 2006-09-26
  • 打赏
  • 举报
回复
那个图我就不知道是啥样了,不过,书也是人写的,就算有误也不足为奇。
carlxuan 2006-09-26
  • 打赏
  • 举报
回复
哪位高人解释一下javascript权威指南第四版 253页上的图,是不是书上错了阿(因为实际中就像前面的高手们说的a,b,c在同一层上啊,而且他们的b.parent,c.parent就直接是top了阿)
IT服务 2006-09-26
  • 打赏
  • 举报
回复
嗯哪.

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部