我需要知道用户何时更改回包含我的页面的选项卡。我尝试了visibllity api,但是在切换标签页时,我的订阅未触发。我订阅了很多事件,除了切换选项卡时,其他所有事件都会触发。
代码如下:
private subscribeToActionEvents() {
this._zone.runOutsideAngular(() => {
const actionEventNames = ['mousemove', 'scroll', 'keyup',
'hidden', 'webkitHidden', 'visibilitychange', 'webkitvisibilitychange', 'msvisibilitychange'];
const events = actionEventNames.map((eventName) => {
let el = this._element.nativeElement;
return Observable.fromEvent(jQuery(el).closest('body'), eventName);
});
const allActionEvents$ = Observable.merge(...events);
this._subscriptions$.push(allActionEvents$.subscribe((event) => {
this._registerUserActivity();
})
);
});
}
我什至尝试附加到'html'而不是'body'标签,没有区别。 我想念什么吗? 谢谢
答案 0 :(得分:1)
您需要将侦听器添加到文档中,以使可见性更改生效。 简单的例子,检查控制台输出:https://stackblitz.com/edit/angular-wkjqrw