我需要检测网页不活动的位置,如果用户处于非活动状态超过15分钟,那么用户应该注销。为此我试图通过附加点击/按键事件来检测用户的不活动状态。整个页面以及主要的iframe。
这里的问题是我能够在主页面(主iframe)上检测到按键/点击事件,但无论showDialoge(另一个iframe)在哪里,我都无法检测到此事件。即使这些事件被添加到主iframe的主体以及整个网页,但不知何故我无法检测到相同的内容。请帮助。
我使用的是OpenText Cordys框架XFORMs / JavaScript 。
目前没有jquery,但如果需要,我可以使用。
答案 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将返回打开的应用程序的窗口对象。您可以将事件处理程序附加到所有窗口并执行。