2012-12-18 77 views
0

我想写一个jQuery插件,应该在离开页面或关闭浏览器之前注销用户。我已经捕获了页面的每个退出点(例如,f5,关闭标签页,刷新,关闭浏览器,导航),但是当我尝试在离开页面之前发送jQuery.post()请求时,无法发出请求,因为浏览器没有时间发送请求。延迟页面导航/离开jQuery

有没有办法延迟任何页面导航/页面离开/浏览器关闭1秒或更长时间,所以我可以在实际离开页面之前挤入jQuery.post()请求?

回答

3

传统的做法是让客户端每隔x分钟向服务器发送一个请求,让它知道用户仍处于活动状态。如果服务器在某个时间段内没有收到请求,则应该使会话过期(从而将用户登录)。

+0

我想到了这样的事情,但是这不需要套接字连接吗?或者有没有办法做到这一点使用PHP会话? –

0

我想这可能会回答你的问题:Delay page close with Javascript?

这是一个越野车的解决方案,虽然,这主要是因为现代的浏览器不真正让这样的东西出于安全原因。

如果您使用cookie来保存会话信息,您是否可以使用onunload事件销毁cookie并因此让用户注销?

希望有所帮助。

+0

这个答案确实解释了延迟页面关闭的方式,但是它并不包括在执行所有功能之前持有/暂停导航或关闭页面。 –

+0

那是因为除非你想做一些严重的黑客攻击,否则它不可能,因为它有可能被误用。你可以试试onunload,但我不知道这是否会解决你的情况。您可能必须改用Cookie。抱歉,我无法提供更多帮助。 – ecs