html中用js监控键盘事件!

我在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获取焦点,简单示例如下

img


<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关系


用chrome或者webkit本地file测试默认不允许访问框架内容,需要配置过chrome启动方式,参考下面的
配置chrome支持本地(file协议)ajax请求_JavaScript/Ajax开发技巧_Web开发网 https://www.w3dev.cn/article/20141031/file-protocol-config-chrome-support-ajax-request.aspx

img