首页 > 解决方案 > 如何找到窗口是否关闭或没有角度

问题描述

嘿,我在我的项目中使用 angular 5。对于一些点击,我正在另一个选项卡中打开一些 URL。我想在关闭新打开的选项卡时进行一些更新。下面是我尝试过的代码,但我无法收到任何警报消息。我哪里出错了?

commentAction(action: string, id: number) {
            var url ='someurl';
            var win = window.open(url, '_blank');
            win.focus();
            var timer = setInterval(function() {   
                alert('timer is running');
                if(win.closed) {  
                    clearInterval(timer);  
                    alert('doing some update');  
                }  
            }, 1000); 
        }

标签: angular

解决方案


您用来检测新窗口是否关闭的错误方法是每 1000 秒检查一次。你也应该在警报后做 clearInterval 。

在新打开的窗口中有这个: -

@HostListener('window:beforeunload', ['$event'])
beforeUnloadHander(event) {
    window.parent.postMessage('closed');
}

在现有组件中

@HostListener('window:message', ['$event'])
onMessage(event) {
  if(event ==='closed') {
    alert('doing some update');
  }
}

推荐阅读