我们如何检测用户何时关闭浏览器?

cha*_*rin 24 angular

我的意思是,我想跟踪用户何时离开应用程序,关闭浏览器或标签.

组件和指令有一个名为ngOnDestroy的生命周期钩子,它在组件被销毁时被调用,但是当用户离开应用程序时它无法捕获

import { Component, OnInit } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'app',
  templateUrl: 'app.component.html'
})
export class AppComponent implements OnDestroy {
  constructor() { }

  ngOnDestroy() {
      alert(`I'm leaving the app!`);
  }

}
Run Code Online (Sandbox Code Playgroud)

如果用户关闭浏览器,则不会执行警报.

Gün*_*uer 42

你可以听unloadbeforeunload类似这样的事件:

export class AppComponent {
  @HostListener('window:unload', [ '$event' ])
  unloadHandler(event) {
    // ...
  }

  @HostListener('window:beforeunload', [ '$event' ])
  beforeUnloadHander(event) {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

也可以看看

  • @GünterZöchbauer上面的方法对我不起作用...我发出警报,但它没有触发......角版2.4.10 (9认同)
  • 警报将永远不会显示..因为对话框将在那时消失.在开发人员工具上放置一个断点,以便您可以看到它被触发. (6认同)
  • 可以仅关闭选项卡/浏览器。 (3认同)
  • 该事件不仅在关闭选项卡时刷新页面时也会触发。 (3认同)