当前位置:  开发笔记 > 编程语言 > 正文

将焦点设置为iframe内容

如何解决《将焦点设置为iframe内容》经验,为你挑选了3个好方法。

我有一个带有document.onkeydown事件处理程序的页面,我将它加载到另一个页面的iframe中.我必须在iframe内部单击才能让内容页面开始"收听".

有没有什么方法可以在外部页面中使用JavaScript将焦点设置到内部页面,所以我不必在iframe内部单击?

编辑:回复评论:

上下文是主窗口是一个类似灯箱的系统,除了代替图片,它显示iframe,每个iframe是一个带有keydown/mousemove处理程序的交互式页面.这些处理程序在显示灯箱之后点击iframe之前不会触发.

我实际上并不像传统意义上的"setFocus"那样"在iframe contentDocument上启用事件处理程序"



1> cheeming..:

我在jQuery Thickbox(一个灯箱式对话框小部件)中遇到了类似的问题.我解决问题的方法如下:

function setFocusThickboxIframe() {
    var iframe = $("#TB_iframeContent")[0];
    iframe.contentWindow.focus();
}

$(document).ready(function(){
   $("#id_cmd_open").click(function(){
      /*
         run thickbox code here to open lightbox,
         like tb_show("google this!", "http://www.google.com");
       */
      setTimeout(setFocusThickboxIframe, 100);
      return false;
   });
});

没有setTimeout(),代码似乎不起作用.根据我的测试,它适用于Firefox3.5,Safari4,Chrome4,IE7和IE6.



2> danza..:

使用contentWindow.focus()方法,可能需要超时才能等待iframe完全加载.

对我来说,也可以使用onload="this.contentWindow.focus()"firefox 将属性作用到iframe标签中



3> Jaime Febres..:
document.getElementsByName("iframe_name")[0].contentWindow.document.body.focus();

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有