0

我在一个网站上工作,目前遇到一个问题,我有一个用户在访问我的网站时将成为骑手,他必须标记为活动,当他离开时,他必须标记为非活动。好吧,当他正确注销时,我可以将他标记为活跃甚至不活跃。但是如果他关闭浏览器或选项卡怎么办。其次,我的网络应用程序将主要在手机上运行,​​所以如果骑手在浏览器和其他应用程序之间切换怎么办。我已经试过了

window.onbeforeunload = function(event) {
        //My Ajax Request
});

window.addEventListener("unload", function(event) {
        //My Ajax Request
});

但它在 Firefox 上工作得很好,但有时只能在 chrome 和 Internet Explorer 上工作,而且不可靠。

我希望有人可以指导我找到更好更可靠的方法。

4

2 回答 2

0

对于 Ajax 请求,unload 和 beforeunload 被认为是不可靠的。您可以选择短轮询 - 向服务器发送有关用户处于活动状态的指示(例如,每 x 秒/分钟)。基于此标记用户活动/非活动。

用于在标签/移动应用程序之间切换。您可以使用 windows blur 事件来表示相同。

于 2020-04-08T11:21:23.930 回答
0

试试这些方法:

window.addEventListener("beforeunload", function(event) {
    //My Ajax Request
});

window.attachEvent("beforeunload", function(event) {
    //My Ajax Request
});

此外,在执行 AJAX 请求之前使用 event.preventDefault() 。

于 2020-04-08T11:04:19.853 回答