【问题标题】:run ajax request on browser closed在关闭的浏览器上运行 ajax 请求
【发布时间】:2020-04-08 10:53:55
【问题描述】:

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

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

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

但它在 Firefox 上运行良好,但有时只能在 chrome 和 Internet Explorer 上运行,而且不可靠。

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

【问题讨论】:

    标签: javascript jquery ajax status browser-close


    【解决方案1】:

    试试这些方法:

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

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

    【讨论】:

    • 试过这个工作 beforeunload 在 firefox 上工作得很好,但在其他浏览器上它有时工作
    【解决方案2】:

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

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

    【讨论】:

    最近更新 更多