如何检测包含我的应用程序的最后一个浏览器选项卡是否关闭?

时间:2011-10-18 02:03:54

标签: php ajax web-applications cookies

我的PHP应用程序菜单上有一个很好的LogOut按钮,但有些人不使用它,他们只是退出浏览器。

有什么方法可以检测退出浏览器和/或关闭我的应用程序打开的最后一个标签? (我意识到它不会处理浏览器崩溃,但它比我现在更好并且覆盖99%的情况)。

我发现我不能使用JavaScript,因为DOM不会让我的JS知道其他更广泛的标签和窗口。

我使用了基于计时器的解决方案,但是单个用户将超时设置为999999分钟并将同时用户数设置为1,然后关闭他的浏览器&把自己锁在外面。

但是,另一种方式呢?伙计们,横向思考。当用户使用我的应用中的页面打开新标签时,我可以推送Cookie吗?然后在用户希望关闭标签时删除cookie?并检查我是否正在重新启动最后一个cookie&通知服务器将其视为注销?

如果不是cookie还有其他一些方法吗? (在打开和关闭的页面上使用Ajax,服务器可以决定最后一个标签是否已关闭?)

1 个答案:

答案 0 :(得分:2)

如何捕获网页的卸载事件,以便在卸载时,它使用ajax来调用服务器上的脚本。然后,该脚本将存储浏览器调用它的时间。

如果在20秒内,浏览器访问使用相同会话的另一个页面,这意味着用户只是在您的网站上浏览。然后你可以安全地取消设置从ajax调用中存储的时间。

在服务器端,有一个每分钟运行一次的cron作业(如果您担心资源,则为5),检查是否有任何会话设置了卸载时间,以及卸载时间是否超过25秒。如果是这样,则表示用户已关闭浏览器,标签或已离开您的应用。应该保存以便为该浏览器进行任何清理或注销。

您可能需要根据互联网/服务器的速度以及用户导航时页面刷新的速度来调整时间。