Window.open 正在卸载前触发

Window.open is firing beforeunload

当我打电话给

window.open("aPageInMyApp","MsgWindow")

我的 EventListener 有时触发,有时不触发。

@HostListener('window:beforeunload') logout(){//some code}

这样做的原因是,如果您正在呼叫

window.open("aPageInMyApp","MsgWindow")

在您打开的 window 中,window.name 将是相同的。这将导致浏览器尝试刷新该选项卡。然后将触发 beforeunload。为了防止这种情况,而不是使用 "MsgWindow",请使用不会重复的动态内容,以确保 window 的名称永远不会相同。使用像 A typescript Guid class? 这样的解决方案来即时生成一些东西。

window.open("aPageInMyApp", Guid.newGuid())

这将确保您永远不会尝试在同一个 window 中打开同一个 window。