Window.onUnload 不一致地向服务器发送结果

Window.onUnload inconsistently sends results to server

我试图让用户在他们试图离开页面时收到警报,如果他们离开,则发出 post 请求,否则什么也不做。这是我的代码(使用 JQuery):

$(window).on("unload", function() { 
    $.post("/delete-room", {
        roomID: roomId
    });
});
$(window).on("beforeunload", function() { 
    return true
})

我(我的服务器)有时会收到 post 请求,但当我关闭 tab/unload 页面时只有大约 1/5 次。这种不一致是有原因的吗?谢谢

不幸的是,在 unloadonBeforenUnload 事件处理程序中进行 ajax 调用并不可靠。大多数调用永远不会到达后端。考虑改用 sendBeacon

$(window).on("unload", function() { 
    var formData = new FormData();
    formData.append('roomID', roomId);
    navigator.sendBeacon("/delete-room", formdata);
});

无论发生什么情况(关闭标签页或 window、移动到新页面等),浏览器都会 POST 数据而不会阻止或延迟。