当用户关闭浏览器选项卡时,将用户设置为离线不起作用

问题描述 投票:0回答:1

在我网站的一个页面中,有一些用户的列表,其中绿色球显示用户是否在线,红色球显示用户离线。我定义了

online()
offline()
PHP 方法,它们将值写入数据库中的字段,并且可以从 Javascript 代码中调用。然后我编写了一段 Javascript 代码,在其中向
visibilitychange
事件添加了一个事件侦听器(当用户正在阅读网站的页面或切换到另一个页面时,唯一真正触发的事件侦听器),这一切都工作正常。但是,如果用户关闭浏览器选项卡,而不是切换到另一个选项卡,则不会触发
visibilitychange
事件并且用户保持在线状态。我尝试向
beforeunload
unload
事件添加事件侦听器,但是当用户关闭选项卡时它们不会被触发,除非我调用
preventDefault()
方法,该方法有时有效,有时无效,但无论如何都会显示对话框要求用户确认退出窗口,我不希望他做什么。无论如何,它并不总是有效。那么,当用户关闭浏览器选项卡时,如何将用户设置为离线?

谢谢

javascript php yii2
1个回答
0
投票

javascript 仅在客户端愿意的情况下运行。不要依赖它作为获取数据的唯一方法。

除了您自己的策略之外,您还可以使用另一种策略,即记录每个用户的最后活动时间戳,然后在几分钟后将其视为“离线”。

© www.soinside.com 2019 - 2024. All rights reserved.