Javascript 在用户决定离开带有@HostListener(';窗口:beforeunload';)的页面后,如何执行方法

Javascript 在用户决定离开带有@HostListener(';窗口:beforeunload';)的页面后,如何执行方法,javascript,node.js,angular,typescript,rxjs,Javascript,Node.js,Angular,Typescript,Rxjs,我使用@HostListener('window:beforeunload')来检测用户是否离开页面。然后打开一个对话框。如果她离开,我希望触发一个事件(或调用一个方法)。如果用户没有离开,我不希望触发此事件 如果我这样做: @HostListener('window:beforeunload') private someFunction() { WHATEVER } 始终调用someFunction。在调用此函数之前,我想知道用户的答案 如果我读到或看起来这些解决方案也适

我使用
@HostListener('window:beforeunload')
来检测用户是否离开页面。然后打开一个对话框。如果她离开,我希望触发一个事件(或调用一个方法)。如果用户没有离开,我不希望触发此事件

如果我这样做:

  @HostListener('window:beforeunload')
  private someFunction() {
    WHATEVER
  }
始终调用
someFunction
。在调用此函数之前,我想知道用户的答案

如果我读到或看起来这些解决方案也适用于我的情况,但我不知道它们如何处理用户的选择(离开还是留下),以知道是否必须调用该函数


它可能与我在HostListener('window:beforeunload',['$event'])中没有使用的
$event
有关吗?

您可以像这样实现canDeactivate防护 您可以像这样添加“确认”以检测用户选择的“确定”或“取消”

canDeactivate(component: ComponentCanDeactivate): boolean | Observable<boolean> 
{
  let confirmObject = confirm("You want to leave ?");
  if (confirmObject  == true) {
    //call some thing then return true;
    return true;
  } 
  else {
    return false;
  }
}

您可以像这样实现canDeactivate保护 您可以像这样添加“确认”以检测用户选择的“确定”或“取消”

canDeactivate(component: ComponentCanDeactivate): boolean | Observable<boolean> 
{
  let confirmObject = confirm("You want to leave ?");
  if (confirmObject  == true) {
    //call some thing then return true;
    return true;
  } 
  else {
    return false;
  }
}

如果用户希望使用链接离开页面,则此操作有效。例如,在关闭浏览器时不是。这是当
窗口:beforeunload
被触发时…所以当用户关闭浏览器时,您想执行一些功能吗?关闭浏览器,关闭选项卡,手动更改url。。。
窗口:beforeunload
涵盖的所有情况。我还没有尝试过,但我想现在你会有两个确认弹出窗口,这本身并不好,而且,用户可以在第一个窗口中说“离开”,在第二个窗口中说“停留”。。。我想要的是得到
窗口的响应:beforeunload
弹出窗口。不,我的意思是,如果用户想使用链接离开页面,您可以尝试我提供的两种方法。例如,在关闭浏览器时不是。这是当
窗口:beforeunload
被触发时…所以当用户关闭浏览器时,您想执行一些功能吗?关闭浏览器,关闭选项卡,手动更改url。。。
窗口:beforeunload
涵盖的所有情况。我还没有尝试过,但我想现在你会有两个确认弹出窗口,这本身并不好,而且,用户可以在第一个窗口中说“离开”,在第二个窗口中说“停留”。。。我想要的是得到
窗口的响应:beforeunload
弹出窗口。不,我的意思是你可以尝试我提供给你的两种方法