Angular 2+-用户关闭浏览器窗口时如何进行API调用?

时间:2018-08-01 21:41:43

标签: angular

当用户关闭浏览器窗口时如何进行API调用?

//在卸载前执行的代码

  @HostListener('window:beforeunload', ['$event'])
  beforeunloadHandler(event) {
    event.preventDefault();
    console.log('--start--');   
    // this call is not completing 
    this.remediationService.saveTime();
    console.log('---end---');
    return false;
  }

1 个答案:

答案 0 :(得分:0)

今天的浏览器都没有“关闭”事件。

有一个onbeforeunload,但是在调用它时你不能做很多事情,特别是你不能在没有用户同意的情况下阻止窗口关闭,如果你从正在关闭的页面上尝试远距离操作将会失败

您可以使用一个小技巧,例如在onfeforeunload事件上触发警报并检查您的响应是否到来。如果不是,则再次发出警报,直到您的响应来临。

注意:在JS中,只有警报,提示才可以阻止执行。我不知道是否还有其他解决方案,但是我知道JS是单线程的,因此我们不能阻止执行。任何阻塞的调用,JS都会以异步方式自动执行。