我的应用程序中有以下场景: 我目前有一个服务,在下面创建一个弹出窗口:
import { Injectable } from '@angular/core';
function _window() : any {
return window;
}
@Injectable()
export class WindowRef {
get nativeWindow(): any {
return _window();
}
}
我使用此服务根据下面的代码生成一个弹出窗口,它完美地运行:
gotoPopUp(scriptId, idleTime) {
let url = '#/script-reader-details/'.concat(scriptId).concat('/').concat(this.agentId).concat('/').concat('25').concat('/').concat(idleTime);
let width = 900;
let height = 500;
let left = (screen.width / 2) - ( width / 2 );
let top = (screen.height / 2) - ( height / 2);
this.winRef.nativeWindow.open(url, '_blank',
'toolbar=no, location=no, status=no, menubar=no, scrollbars=no,resizable=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left + '');
}
我需要检测用户何时点击“X' X'并关闭该弹出窗口。 我尝试使用下面的监听器并按照链接中的帖子进行操作: How can we detect when user closes browser?
示例:
@HostListener('window:unload', [ '$event' ])
unloadHandler(event) {
this.updateIsRunningScript(this.agentId, false);
}
@HostListener('window:beforeunload', [ '$event' ])
beforeUnloadHander(event) {
this.updateIsRunningScript(this.agentId, false);
}
但单击浏览器的关闭按钮时不会调用它们。
listener和nativeWindow之间是否有任何限制?