我正在使用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();
});
答案 0 :(得分:0)