Я использую 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();
});