我在html中加入了iframe,里面嵌套了其他页面,常规的键盘事件,当iframe获得焦点后,所有键盘事件都失效,有没有后台可以监控键盘按下事件,当监控到键盘按下,我让主页面中的textbox获得焦点。目前网上找了很多,都无法实现。最好能在浏览器失去焦点的时候,也能监控到
浏览器失去焦点要要监控是不可能的了。。又不是c/s系统。
iframe获取焦点后要想控制父页内容,应该继续往iframe注册事件,然后通过parent.document.getElementById之类的api获取控件后设置焦点,前提是没跨域。跨域可以用postMessage在iframe和父页之间进行通信(当然也需要能控制iframe加载的页面)。
或者直接透明层盖住iframe,不允许操作iframe,这样就响应父页事件了
text和iframe不是在同一个页面,操作iframe不会响应text所在页面的事件。要给iframe的document添加click,执行parent.document.getElementById("inp1").focus();让itext获取焦点,简单示例如下
<iframe onload="insertEvt(this)" src="xx.html"></iframe><br />
<div id="container">container</div>
<input type="text" id="inp1" autofocus />
<script>
function div_mousedown() {
containerdiv = document.getElementById("container");
document.getElementById("inp1").focus();
containerdiv.style.display = "none";
//alert("onmousemove");
//containerdiv.style.display = "block";
}
function insertEvt(ifr) {
ifr.contentWindow.document.onclick = div_mousedown
}
</script>
如果textbox和iframe关系不是这样,textbox也是放在其他iframe中,可以参考下面的文章更新过dom关系