在页面关闭时,触发注销功能

时间:2019-02-15 14:40:26

标签: javascript

我正在尝试做到这一点,以便当用户关闭我的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();
}

2 个答案:

答案 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不再可见,至少对我来说是这样。)