javascript窗口卸载事件

时间:2010-11-20 07:42:03

标签: javascript jquery

我正在计算在线用户数量,但是如果一个人在没有退出的情况下关闭窗口,他就不在线,我需要通过javascript或jquery动态地注销该用户。 当我使用body onunload事件来检查它是否有效但如果我刷新页面它也会调用body unload事件。

这是我的代码

<script>
function LogmeOut()
{
  window.location='logout.php';
}
</script
<body onUnload="LogmeOut();">
   .....
   .....
</body>

注销php将在关闭窗口之前注销当前用户。 有什么建议吗?

3 个答案:

答案 0 :(得分:5)

我认为没有可靠的方法可以告诉你。

最好的办法是当用户访问某个页面时,更新他们在数据库中的活动并设置一个新的到期时间(例如15分钟)。

如果用户在查询时没有活动,您可以将它们视为离线。

答案 1 :(得分:0)

我喜欢Alex的答案,如果您通过JavaScript跟踪活跃用户,肯定会因浏览器崩溃而导致错误,“活跃”但实际上非活动用户会将浏览器闲置等等...

Alex的方法可以避免这一切。

答案 2 :(得分:0)

而不是使用window.onunload,我更喜欢使用window.onbeforeunload,然后对logout.php进行ajax调用,如下所示:

window.onbeforeunload = function(){
    // make an ajax call to logout.php
};