我正在尝试编写一个jQuery插件,该插件应该在离开页面或关闭浏览器之前注销用户。我已经捕获了页面的每个退出点(例如 f5、关闭选项卡、刷新、关闭浏览器、导航),但是当我尝试在离开页面之前发送 jQuery.post() 请求时,无法发出请求,因为浏览器没有时间发送请求。
有没有办法将任何页面导航/页面离开/浏览器关闭延迟 1 秒或更长时间,以便我可以在实际离开页面之前挤入 jQuery.post() 请求?
传统的方法是让客户端每x
分钟向服务器发送一次请求,让它知道用户仍然处于活动状态。如果服务器在特定时间范围内未收到请求,则应使会话过期(从而将用户注销)。
我想这可能会回答你的问题:使用 Javascript 延迟页面关闭?
不过,这是一个有缺陷的解决方案,主要是因为出于安全原因,现代浏览器并不真正允许这样的东西。
如果您使用 cookie 来保存会话信息,您是否不能使用 onunload 事件销毁 cookie 并因此让用户注销?
希望有帮助。