00004.监听网页关闭和刷新事件

2023-05-18  本文已影响0人  笑着字太黑

目标是在网页关闭是logout,刷新时不logout

没找到太好的办法,关闭和刷新时都会执行beforeunload->unload事件。

想到一个折衷方案:
1.unload的时候把事件保存在localStorage中
2.load的时候从localStorage中取出事件,计算时间差,差值在自定义的最大刷新时间以上(这里5秒)的话,就认为是需要logout

@HostListener('window:load', ['$event'])
   onLoad(event: any) {
     let lastestLeaveTime = new Date().getTime();
     let lastestLeaveTimeStorage = localStorage.getItem('lastestLeaveTime');
     if (lastestLeaveTimeStorage) {
       lastestLeaveTime = parseInt(lastestLeaveTimeStorage, 10);
       localStorage.removeItem('lastestLeaveTimeStorage');
     }
     let differTime = new Date().getTime() - lastestLeaveTime;
     if (differTime >= 5*1000) {
       this.authService.logout();
     }
   }

   @HostListener('window:unload', ['$event'])
   onUnload(event: any) {
     localStorage.setItem('lastestLeaveTime', `${new Date().getTime()}`);
   }
上一篇 下一篇

猜你喜欢

热点阅读