我正在监听窗口的
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
}
假设
fromEvent
是一个事件监听器,看起来第二个(handleOnWindowUnload)只有在第一个事件触发后才会被订阅。这意味着如果第一个尚未触发,第二个甚至不会被订阅。
第一个事件侦听器在
'beforeunload'
上触发。这不是意味着当您关闭页面时,它会在之前运行吗?
PS 使用断点进行调试以查看哪些代码运行或未运行始终是一个好主意。