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())
这将确保您永远不会试图在同一个窗口中打开同一个窗口。