mengfangui

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 来实现。

分类:

技术点:

相关文章: