打赏

页面崩溃检测

1、页面正常关闭,如何通知 A 页面

页面正常关闭时,会先执行 window.onbeforeunload ,然后执行 window.onunload。

2、页面意外崩溃,又该如何通知 A 页面

利用 window 对象的 loadbeforeunload 事件,通过心跳监控来获取 B 页面的崩溃。

 window.addEventListener('load', function () {
      sessionStorage.setItem('good_exit', 'pending');
      setInterval(function () {
         sessionStorage.setItem('time_before_crash', new Date().toString());
      }, 1000);
   });

   window.addEventListener('beforeunload', function () {
      sessionStorage.setItem('good_exit', 'true');
   });

   if(sessionStorage.getItem('good_exit') &&
      sessionStorage.getItem('good_exit') !== 'true') {
      /*
         insert crash logging code here
     */
      alert('Hey, welcome back from your crash, looks like you crashed on: ' + sessionStorage.getItem('time_before_crash'));
   }

在页面加载时(load 事件)在 sessionStorage 记录 good_exit 状态为 pending,如果用户正常退出(beforeunload 事件)状态改为 true,如果 crash 了,状态依然为 pending,在用户第2次访问网页的时候(第2个load事件),查看 good_exit 的状态,如果仍然是 pending 就是可以断定上次访问网页崩溃了!

但有一个问题,本例中用 sessionStorage 保存状态,在用户关闭了B页面,sessionStorage 值就会丢失,所以换种方式,使用 localStorage 来实现。

posted @ 2021-04-29 10:39  孟繁贵  阅读(103)  评论(0编辑  收藏  举报
TOP