请各位高人一定帮忙啊!在线等待!问题描述:
网页里有两个框架:
<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.   

    这么快回帖了 先感谢啊!
    我的代码不在这台机器上。只能在这说个大概:
    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. 我的语句无语法错误,是否不完整。
    请高手指点,最好给出示例代码。
    谢谢!!!
      

  2.   


    parent.frames["frame2"].focus()应该是可以的阿 ,你看看这两个frame的tabindex分别是多少啊 
      

  3.   

    我刚把两个frame的tabindex分别设成1,2.
    alert(window.parent.frames["frame1"].tabindex);
    结果是undefined,
    但是查询alert(window.parent.frames["frame1"].name);
    结果是frame1,
    是不是frame不支持tabindex啊
      

  4.   


    parent.frame1.blur();   
      parent.frame2.focus();   
      parent.frame2.detailform.focus();   
    可以么
      

  5.   

    http://www.cnblogs.com/rubylouvre/archive/2010/05/03/1726334.html
      

  6.   

    问题的关键在于:
    通过键盘选择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>
    没发现你说的问题
      

  7.   

    感谢各位好心人,问题已解决。
    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()方法,发现没有触发这个方法。不知为何,高手知道的可告之,以便深入学习。
    结贴,感谢!