添加到父iframe(正文)的Click事件在子iframe(正文)中不起作用

时间:2017-03-29 01:59:31

标签: javascript html iframe cordys-opentext

我需要检测网页不活动的位置,如果用户处于非活动状态超过15分钟,那么用户应该注销。为此我试图通过附加点击/按键事件来检测用户的不活动状态。整个页面以及主要的iframe。

这里的问题是我能够在主页面(主iframe)上检测到按键/点击事件,但无论showDialoge(另一个iframe)在哪里,我都无法检测到此事件。即使这些事件被添加到主iframe的主体以及整个网页,但不知何故我无法检测到相同的内容。请帮助。

我使用的是OpenText Cordys框架XFORMs / JavaScript

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

3 个答案:

答案 0 :(得分:1)

如果您的文件在同一台服务器上,您可以从子iframe调用父窗口的功能,如

parent.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";,在父窗口中,您可以检查此变量并执行所需的操作。

这是您可以使用keypress

将事件从父框架绑定到子框架的正文以便监听jQuery
$("#child-frame").bind("load", function(){
    $(this).contents().find("body").on('keypress', function(e) {
        console.log(e.keyCode);
    });
});

答案 1 :(得分:0)

如果我理解你的问题,它与事件传播有关。我承认,虽然我不太喜欢iframe。看到这篇文章。 What is event bubbling and capturing?

除了您的问题,理想情况下您应该通过会话进行管理。 15分钟后到期。如果用户未经授权(即未登录),请将其发送到主页面。

答案 2 :(得分:0)

system.windows将返回打开的应用程序的窗口对象。您可以将事件处理程序附加到所有窗口并执行。