0

我有一个要求,我需要检测网页的不活动状态,如果用户不活动超过 15 分钟,那么用户应该被注销。为此,我试图通过将点击/按键事件附加到整个页面来检测用户的不活动状态也适用于主 iframe。

这里的问题是我能够检测到主页(主 iframe)上的按键/单击事件,但是无论在哪里 showDialoge(另一个 iframe),我都无法检测到这个事件。即使这个事件被添加到主 iframe 的主体和整个网页中,我还是无法检测到相同的事件。请帮忙。

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

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

4

3 回答 3

1

如果您的文件在同一台服务器上,您可以从子 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>

url对于您的情况,另一种可能的解决方案是从您的子 iframe 在父级中传递一个变量。例如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);
    });
});
于 2017-03-29T02:35:07.660 回答
0

如果我理解您的问题,它与事件传播有关。我承认我对 iframe 不太熟悉。请参阅此其他帖子。 什么是事件冒泡和捕获?

除了您的问题,理想情况下您应该通过会话来管理它。15 分钟后结束会话。如果用户未获得授权,也就是未登录,则将其发送到主页。

于 2017-03-29T02:34:59.427 回答
0

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

于 2019-06-19T08:59:03.480 回答