我需要检测浏览器是否正在使用jQuery关闭,并且如果这是真的则执行一个事件。我的网站上有一个聊天功能(很像Facebook),可以让用户在导航到网站结构中的其他页面时登录,但是如果他们点击,则需要将他们从聊天中注销(因此他们不会在线显示给他人)浏览器关闭按钮。所以.unload()
将无效,因为.unload()会将注销功能应用于所有窗口操作,包括导航到网站结构中的另一个页面。 .unload()
适用于浏览器关闭,但也适用于浏览器前进和后退导航,因此我需要一种方法来检测浏览器是否正在关闭,并且仅在浏览器关闭时才会检测。
答案 0 :(得分:2)
执行此操作的最佳方法是设置服务器的定期轮询,以告知用户仍在页面上。您可以每分钟发送一次AJAX请求以确认用户仍在那里,并且如果自上次通知以来已超过该时间,则在服务器端将其注销。
这可能不是最可靠的解决方案,但它是一种非常常见的解决方案,可能对您想要做的事情有效。
答案 1 :(得分:1)
这是不可能的。 onunload
/ onbeforeunload
是系统提供的唯一事件。页面被卸载的原因没有透露给页面。
可以经常检查脚本打开的窗口是否仍然存在。这些解决方案基于setInterval()
和窗口的closed
属性。但我认为这不是你想要的。
答案 2 :(得分:1)
无论您使用什么进行聊天(orbited,websockets?)都应该能够检测到会话超时。