Window.open被烧成beforeunload

问题描述:

当我打电话Window.open被烧成beforeunload

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

我的事件监听被解雇,有时,有时事实并非如此。

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

这样做的原因是,如果你在呼唤

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

从您打开,window.name将是相同的窗口内。这将导致浏览器尝试刷新该选项卡。然后,这将会启动beforeunload。为了防止出现这种情况,而不是使用“MsgWindow”,请使用动态的,不会重复的动作,以确保窗口的名称永远不会相同。使用像A typescript Guid class?这样的解决方案即时生成某些内容。

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

这将确保您永远不会试图在同一个窗口中打开同一个窗口。