window.onbeforeunload并不总是开火?

时间:2013-02-10 22:13:20

标签: javascript jquery

我的应用程序依赖于能够设置用户在线/离线状态。

我已经通过使用window.onbeforeunload来解决这个问题,以查看用户何时离开页面。

问题是以下代码并不总是被执行,因此仍然说有些人在离开页面后在线。

这是我目前的代码:

window.onbeforeunload = function (event) {
    $.ajax({
        type: 'GET',
        url: './changeStatus.php?cid=' + ccID + '&status=0',
        contentType: "application/json",
        dataType: 'json',
        cache: false,
        async: false,
        success: function (data) {},
        error: function (e) {
            //console.log(e);
        }
    });
    return;
};

我有什么想法可以强迫这个总是被执行? (在所有浏览器上)

1 个答案:

答案 0 :(得分:0)

脚本可能总是在页面关闭时执行,但这并不意味着它总是成功调用服务器。

例如,如果用户在关闭页面之前断开了Internet连接,则脚本无法向服务器发送任何内容。每次关闭页面时,您都不能依赖于从浏览器接听电话。

您可以在上次听到用户时跟踪服务器,以便在用户暂时未请求任何页面时将其设置为脱机。另一种方法是,只要用户在页面上,就经常向服务器发送请求,当请求停止时,服务器知道用户已经离开。