我正在尝试做到这一点,以便当用户关闭我的Web应用程序或离开它时,会自动触发注销功能。
我尝试了各种机制,但这似乎是最合乎逻辑的:
window.addEventListener("unload",logout());
但是,这只会导致页面在加载时触发注销功能,并保持循环。当用户关闭选项卡,离开页面导航或关闭浏览器时,是否可以触发注销功能?我不担心它的弹出窗口,我只想能够触发注销功能。
为清楚起见,这是我的注销功能:
function logout() {
document.body.style.cursor = "wait";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
document.body.innerHTML = 'User logged out';
document.body.style.cursor = "initial";
location.reload();
}
});
xhr.open("POST", "http://127.0.0.1:7071/logout");
xhr.setRequestHeader("Authorization", authToken);
xhr.send();
}
答案 0 :(得分:1)
尝试以下操作,不要用logout
调用()
函数:
window.addEventListener("unload", logout);
或
window.addEventListener("beforeunload", logout);
答案 1 :(得分:0)
您正在调用功能。尝试不使用寄生虫:
window.addEventListener('unload', logout);
或者,您也可以覆盖window.onbeforeunload
:
window.onbeforeunload = logout;
function logout() {
console.log("LOGGED OUT");
}
<a href="example.com">just some link to test</a>
(单击“运行代码段”然后重新加载此页面时,console.log
不再可见,至少对我来说是这样。)