检查 windows beforeunload 事件是如何触发的 - 按下按键或关闭浏览器时

问题描述 投票:0回答:1

我正在监听窗口的

beforeunload
事件。

然后我想确定 beforeunload 事件是由按下按键(Ctrl+r/F5)还是由用户关闭浏览器窗口触发的。

在这两种情况下,我想在重新加载或关闭窗口之前使用自定义对话框进行确认

在这一切中,我唯一想知道的是,事件是否是由于用户按键或用户试图关闭浏览器窗口而发生的。

fromEvent(window, 'beforeunload').subscribe(e => {
 e.preventDefault();
 e.returnValue = false;
 this.handleOnWindowUnload();
}
handleOnWindowUnload(): void {
  // case one: on reload by keys pressed, confirm reload in dialog, and then reload window

  // case two: on closing the browser, confirm in dialog, and then close browser
}
javascript angular rxjs primeng
1个回答
1
投票

假设

fromEvent
是一个事件监听器,看起来第二个(handleOnWindowUnload)只有在第一个事件触发后才会被订阅。这意味着如果第一个尚未触发,第二个甚至不会被订阅。

第一个事件侦听器在

'beforeunload'
上触发。这不是意味着当您关闭页面时,它会在之前运行吗?

PS 使用断点进行调试以查看哪些代码运行或未运行始终是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.