我想检测一个Browser / tab close事件,然后调用struts动作。 当我在浏览器中只有一个选项卡时,我能够执行它。 下面是我检测关闭事件的javascript代码:
<script type="text/javascript">
function loadOut() {
if ((window.event.clientX < 0) || (window.event.clientY < 0)) {
document.forms[0].action="Logout.do";
document.forms[0].submit();
}
}
</script>
我正在使用onbeforeunload捕获浏览器关闭事件。
<body onbeforeunload="loadOut();">
当我只用一个标签关闭浏览器时,或当我关闭标签本身时,事件将触发,因为X或Y坐标中的任何一个都将<0。 (这将帮助我检查我只是关闭了浏览器而不是导航到任何其他链接。)
但是,打开多个选项卡后,我会从Internet Explorer中获取“您要关闭所有选项卡还是当前选项卡”弹出窗口。当点击选项时,X和Y坐标都不会保持&lt; 0。 并且行动不会触发。
请帮我解决这个问题。
P.S。:我可以选择从浏览器设置中删除该弹出窗口,但只是想知道是否有其他方式
答案 0 :(得分:0)
我认为你在这里感到困惑。
为了在关闭浏览器时将某人记录下来,您应该使用会话cookie
要在关闭标签时注销,您应该在每次互动时发送到服务器的html源代码中添加安全标记。
为了在没有互动的特定时间之后将某人记录下来,您可以简单地减少会话保持活动时间。结合ajax心跳或类似的东西,你可以保持会话活着,同时至少有一个标签仍处于打开状态。
onbeforeunload旨在告诉用户仍然有一些他尚未提交的内容,例如已填写但尚未提交的提交表单。如果邮件删除等事件尚未转移到服务器上,谷歌邮件会这样做。
客户端应始终可以选择中断与服务器的所有连接。这就是为什么你在使用onbeforeunload时无法做任何事情
您可能想要查看的另一件事是onblur