Метод обновления Workbox отображает «внешние» события - PullRequest
0 голосов
/ 10 октября 2019

Я использую workbox-window v5.0.0-beta.1 и опробовал новую функцию обновления, которая проверит наличие новой версии программного обеспечения. Я слушаю активированное событие, чтобы решить, следует ли информировать пользователей в зависимости от флага «isUpdate».

Хотя само обновление, похоже, работает, вместо замены текущего программного обеспечения на «isUpdate», установленное в значение true,он представляет новое ПО как внешнее ПО с соответствующими внешними событиями. Может быть потому, что я использую как 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 голосов
/ 10 октября 2019

Похоже, что это так, как указано в этой статье: https://samvloeberghs.be/posts/lessons-learned-on-offline-capabilities-with-service-workers-using-workbox-the-sequel

...