首页 > 解决方案 > 当用户在 Angular 9 中关闭浏览器/选项卡时如何执行功能?

问题描述

我已经尝试过对此进行研究,但我正在努力寻找可行的解决方案。我需要来自两个不同服务的两种方法来在浏览器/选项卡关闭时执行。

我尝试过 fetch API,它对 chrome 非常有用,但无法在 IE 中使用。我尝试了如下的while循环:

@HostListener('window:beforeunload', ['$event'])
onBeforeUnload(): void {
    var sessionEnded = false;
this.userSessionService.EndSession(this.userSessionId).then(res => sessionEnded = res);;
while (sessionEnded == false) {
  console.log('session not ended');
}
  }

这对 chrome 非常有用,但我无法关闭 IE 浏览器。

还有什么我错过的吗?

是否有可能打开一个新选项卡以执行功能然后在完成时关闭?

标签: javascriptangulartypescriptevent-handling

解决方案


@HostListener('window:beforeunload', ['$event'])
async onBeforeUnload(): void {
    var sessionEnded = false;
    await sessionEnded = this.userSessionService.EndSession(this.userSessionId);
    while (sessionEnded == false) {
      console.log('session not ended');
    }
  }

推荐阅读