zhangqiang13131 2022-03-19 22:32 采纳率: 0%
浏览 40

html中用js监控键盘事件!

我在html中加入了iframe,里面嵌套了其他页面,常规的键盘事件,当iframe获得焦点后,所有键盘事件都失效,有没有后台可以监控键盘按下事件,当监控到键盘按下,我让主页面中的textbox获得焦点。目前网上找了很多,都无法实现。最好能在浏览器失去焦点的时候,也能监控到

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2022-03-19 23:13
    关注

    浏览器失去焦点要要监控是不可能的了。。又不是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启动方式,参考下面的

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月19日

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建