有没有办法在关闭浏览器时终止会话?我使用了 onunload 和 onbeforeunload 事件。但它不起作用

Is there any way to kill session on closing browser? I have used the onunload and onbeforeunload event. but it doesnt work

我已经使用 (window.onunload) 和 (window.onbeforeunload) 事件来捕获浏览器关闭事件以终止会话。但它在 chrome 对我不起作用。有什么办法吗?

普通异步XMLHttpRequest(包括fetch)往往会在页面关闭时被取消。通常的解决方法是发出同步请求。

但是,有一种新方法可以做到这一点:navigator.sendBeacon。它的设计几乎就是出于这个目的 - 即使在页面关闭后,它也会将要执行的请求排队。

window.addEventListener("unload", function() {
  navigator.sendBeacon("/logout");
});

它仍然无法在所有浏览器上运行,因此如果您关心滞后问题,您可能需要测试它是否可用,如果不可用,请使用上述解决方法。