我的应用程序依赖于能够设置用户在线/离线状态。
我已经通过使用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;
};
我有什么想法可以强迫这个总是被执行? (在所有浏览器上)
答案 0 :(得分:0)
脚本可能总是在页面关闭时执行,但这并不意味着它总是成功调用服务器。
例如,如果用户在关闭页面之前断开了Internet连接,则脚本无法向服务器发送任何内容。每次关闭页面时,您都不能依赖于从浏览器接听电话。
您可以在上次听到用户时跟踪服务器,以便在用户暂时未请求任何页面时将其设置为脱机。另一种方法是,只要用户在页面上,就经常向服务器发送请求,当请求停止时,服务器知道用户已经离开。