javascript - 添加到父 iframe(body) 的单击事件在子 iframe(body) 中不起作用

标签 javascript html iframe cordys-opentext

我有一个要求,我需要检测网页的不活动状态,如果用户不活动超过 15 分钟,则应注销用户。为此,我尝试通过将单击/按键事件附加到来检测用户的不活动状态整个页面以及主 iframe。

这里的问题是我能够检测主页(主 iframe)上的按键/单击事件,但无论 showDialoge(另一个 iframe),我都无法检测到此事件。尽管此事件被添加到主 iframe 的主体以及整个网页,但不知何故我无法检测到相同的事件。请帮忙。

我正在使用 OpenText Cordys 框架 XFORMs/JavaScript

目前没有jquery,但如果需要我可以使用。

最佳答案

如果您的文件位于同一服务器上,您可以从子 iframe 调用父窗口的函数,例如

父级.html

<script>
window.whichKey = function(keycode) {
    console.log("I'm called from child frame, you pressed " + keycode);
}
</script>

child.html

<script>
window.onkeypress = function(event) {
    window.parent.window.whichKey(event.keyCode);
} 
</script>

针对您的情况的另一个可能的解决方案是从子 iframe 传递父级 url 中的变量。例如 window.top.location.href = "parent.html?inactive=true"; 并且在父窗口中您可以检查此变量并执行所需的操作。

这是如何将事件从父框架的主体绑定(bind)到子框架的主体,以使用 jQuery 监听keypress

$("#child-frame").bind("load", function(){
    $(this).contents().find("body").on('keypress', function(e) {
        console.log(e.keyCode);
    });
});

关于javascript - 添加到父 iframe(body) 的单击事件在子 iframe(body) 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43082963/

相关文章:

javascript - JsHint,我可以定位函数定义中所有未使用的参数,而不仅仅是最后一个吗?

html - 电子邮件-防弹背景图片

javascript - 出现警报后,嵌入了Youtube视频的iframe停止了吗?

javascript - 如何让 iframe 从另一个页面上的链接加载内容?

javascript - HTML 5 视频缓冲和 jQuery $( document ).ready()

javascript - HTML/Javascript 表单显示的值不正确

javascript - JSHint的Bad line breaking before '+'错误的解释

jquery - Bootstrap navbar-fixed-top 隐藏页面内容

html - 让页面背景随用户滚动

css - 禁用 iframe 中的所有滚动,但允许单击