检测其他beforeunload处理程序

时间:2019-11-14 18:45:16

标签: javascript

我有一个相当复杂的Web应用程序,用于记录用户操作。

我的日志之一是查看用户离开页面之前滚动了多远。在我的Main.js组件中,这很简单,就像这样:


  componentDidMount(){
    if (typeof window !== 'undefined') {
      this.debouncedScrollHandler = debounce(this.registerScrollHandlers.bind(this), 100);

      window.addEventListener('scroll', this.debouncedScrollHandler);
      window.addEventListener('beforeunload', this.flushScrollLogs);
    }
  }
  maxScrollDepth = 0;
  debouncedScrollHandler = () => {};
  registerScrollHandlers() {
    if (this.maxScrollDepth < window.scrollY) {
      this.maxScrollDepth = window.scrollY;
    }
  }

  flushScrollLogs = () => {
    log(this.maxScroll);
  };

log方法是一个全局记录器,已挂接到beforeunload上。当该事件触发时,日志记录方法会将其所有日志刷新到服务器。如果在上述刷新之前调用了该刷新,则它将永远不会记录最大滚动,因为页面将在实际发送日志到服务器之前退出。

是否有一种方法可以强制日志记录实用程序beforeunload处理程序在事件处理程序列表中排在倒数第二个?

0 个答案:

没有答案