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