工作箱更新方法呈现“外部”事件

时间:2019-10-10 12:31:48

标签: workbox workbox-window

我正在使用workbox-window v5.0.0-beta.1,并尝试了新的更新功能,该功能将检查SW的新版本。 我正在侦听已激活的事件,以根据“ isUpdate”标志决定是否通知用户。

尽管更新本身似乎可以正常进行,但没有将“ isUpdate”设置为true替换当前SW,而是将新SW作为具有相应外部事件的外部SW引入。 可能是因为我同时使用skipWaiting和clientClaim吗?还有其他想法吗?

因此,由我的下面的代码触发的更新检查将在第二个事件处理程序中结束。

if ('serviceWorker' in navigator) {
      _this.theWorkBox = new Workbox('../service-worker.js'); 

      _this.theWorkBox.addEventListener('activated', event => {      
        if (event.isUpdate && confirm(`New content is available!. Click OK to refresh`)) {
          setTimeout(function () {
            window.location.reload();
          }, 3000);
        }
      }); 

     _this.theWorkBox.addEventListener('externalactivated', () => {      
        if (confirm(`New content is available!. Click OK to refresh`)) {
          setTimeout(function () {
            window.location.reload();
          }, 3000);
        }
      });

      _this.theWorkBox.register(); 

      window.addEventListener('check-sw', function () {
        _this.theWorkBox.update();
      }); 

1 个答案:

答案 0 :(得分:0)