请各位高人一定帮忙啊!在线等待!问题描述:
网页里有两个框架:
<frameset rows=”50%,50%”>
<frame src=”1.html” name=”frame1″ />
<frame src=”2.html” name=”frame2″ />
</frameset>
需求:
当前活动框架是frame2,即focus在frame2中,怎样将焦点focus赋给frame1,或frame1中的table,将frame1设成活动框架?
更详细说明:
要实现的是,通过键盘选择1.html中的table列表每一行,在2.html中会显示1.html的table中该行的详细信息。
但是,2.html中显示了之后,2.html和frame2就变成了当前活动页面和框架,无法继续在1.html中继续键盘操作。
怎样通过2.html中的语句将frame1或者frame1中的table变成当前活动的框架或控件?我的尝试:1)
window.parent.frames["frame1"].document.getElementById("table_in_first_html").focus();
2)
window.parent.frames["frame1"].focus();
3)
window.parent.frames["frame1"].document.getElementById("div_in_first_html").focus();
都不能将焦点赋给frame或其中的控件,
但是能够通过window.parent.frames["frame1"].document.getElementById("table_in_first_html").name等参数获取对应控件的值,也就是说引用可以,但赋不了焦点,无法实现frame1中键盘的连续操作。
焦急在线等待答案!!!
网页里有两个框架:
<frameset rows=”50%,50%”>
<frame src=”1.html” name=”frame1″ />
<frame src=”2.html” name=”frame2″ />
</frameset>
需求:
当前活动框架是frame2,即focus在frame2中,怎样将焦点focus赋给frame1,或frame1中的table,将frame1设成活动框架?
更详细说明:
要实现的是,通过键盘选择1.html中的table列表每一行,在2.html中会显示1.html的table中该行的详细信息。
但是,2.html中显示了之后,2.html和frame2就变成了当前活动页面和框架,无法继续在1.html中继续键盘操作。
怎样通过2.html中的语句将frame1或者frame1中的table变成当前活动的框架或控件?我的尝试:1)
window.parent.frames["frame1"].document.getElementById("table_in_first_html").focus();
2)
window.parent.frames["frame1"].focus();
3)
window.parent.frames["frame1"].document.getElementById("div_in_first_html").focus();
都不能将焦点赋给frame或其中的控件,
但是能够通过window.parent.frames["frame1"].document.getElementById("table_in_first_html").name等参数获取对应控件的值,也就是说引用可以,但赋不了焦点,无法实现frame1中键盘的连续操作。
焦急在线等待答案!!!
我的代码不在这台机器上。只能在这说个大概:
1)两个frame的html页面中各有1个table,在1.html中做了个键盘上下键选择行的操作,在2.html中显
示详情。
2)在1.html中有一个parent.frames["frame2"].document.detailform.submit();
此时,2.html刷新,变成当前活动页面,
3)我的想法是:实现继续在1.html中上下键操作,连续在2.html中显示详情的效果,但是,焦点的focus()方法通过刚才问题中所说的语句无法赋给frame1或其中的div、table、form等控件。我的想法:
1. 跨框架的焦点转换是否还有其他方式
2. 这个需求是否是focus()函数的范畴
3. 我的语句无语法错误,是否不完整。
请高手指点,最好给出示例代码。
谢谢!!!
parent.frames["frame2"].focus()应该是可以的阿 ,你看看这两个frame的tabindex分别是多少啊
alert(window.parent.frames["frame1"].tabindex);
结果是undefined,
但是查询alert(window.parent.frames["frame1"].name);
结果是frame1,
是不是frame不支持tabindex啊
parent.frame1.blur();
parent.frame2.focus();
parent.frame2.detailform.focus();
可以么
“通过键盘选择1.html中的table列表每一行,在2.html中会显示1.html的table中该行的详细信息。
但是,2.html中显示了之后,2.html和frame2就变成了当前活动页面和框架”你是如何显示的?
==============================
我测试了一下:
鼠标点一下1.html的表格,然后用键盘1,2,3分别在下面的frame里显示三行的信息
<frameset rows='50%,50%'>
<frame src='1.html' name='frame1' />
<frame src='2.html' name='frame2' />
</frameset>1.html:
<SCRIPT LANGUAGE=javascript>
function aaa(tbl,e){
e=e||window.event ;//alert((e.keyCode>48&&e.keyCode<52)||(e.keyCode>97&&e.keyCode<100))
if((e.keyCode>48&&e.keyCode<52)||(e.keyCode>97&&e.keyCode<100)){
var i=0;
if(e.keyCode>90){i=k.keyCode-97}
else{i=e.keyCode-49}
top.frame2.document.getElementById('s').innerHTML=tbl.rows[i].cells[0].innerHTML
}
else{return}
}
</SCRIPT>
<TABLE WIDTH=75% BORDER=1 CELLSPACING=1 CELLPADDING=1 onclick='this.focus();' onkeydown='aaa(this,event)' tabindex=1>
<TR>
<TD>111111111111111111</TD>
<TD>11111111111111111</TD>
<TD>11111111111111</TD>
</TR>
<TR>
<TD>2222222</TD>
<TD>2222222222222222</TD>
<TD>22222222222222</TD>
</TR>
<TR>
<TD>33333333</TD>
<TD>333333333333333</TD>
<TD>3333333333</TD>
</TR>
</TABLE>2.html:
<div id=s style='border:1px solid red;'>显示表格信息</div>
没发现你说的问题
to xiaofan_sap(骑着蜗牛爬树):
感谢第一时间回帖,你提的方法和后来的帖子我都试过了,都是解决了一半。
to toury (理上网来) :
感谢实践,按你的方法应该frame1始终是活动框架,没有发生第二个框架页面提交刷新,不需要focus()。
为方便大家,把我的解决过程说明如下:
1)还是按照这句话切换焦点:window.parent.frames["frame1"].document.getElementById("table_in_first_html").focus();
2)执行之后的效果是table_in_first_html得到焦点后迅速失去,去向不明。(我拿可见的checkbox做的实验,眼看着focus的虚框闪一下迅速消失了)
3)于是想到用table_in_first_html.onblur()方法捕获这一瞬间,写成:
window.parent.frames["frame1"].focus();
成功。不过也产生了疑惑:
1)为何上面第一步的语句切换焦点后焦点迅速消失,这句话后面再无脚本。后来想想可能是脚本之后还有html语句需要初始化吧,应该焦点又回到这里来了。
2)尝试着用table_in_first_html.onfocus()方法,发现没有触发这个方法。不知为何,高手知道的可告之,以便深入学习。
结贴,感谢!