代码之家  ›  专栏  ›  技术社区  ›  Lazloman

RXJS VisibilityChange事件未在角4中触发

  •  0
  • Lazloman  · 技术社区  · 6 年前

    我需要知道用户何时切换回包含我的页面的选项卡。我尝试了Visiblity 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”标记,没有区别。 我遗漏了什么吗? 谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   A.Winnen    6 年前

    您需要将侦听器添加到文档中,以便VisibilityChange工作。 简单示例,检查控制台输出: https://stackblitz.com/edit/angular-wkjqrw