按照此链接https://github.com/deanhume/pwa-update-available,我正在尝试实施服务工作者更新,但我面临诸如事件更新未触发之类的问题,我认为这与我的应用程序设计,基本上是一个 SPA,意味着我总是在 index.html 上,它的行为类似于 app-shell,我正在推送内容区域中的内容,具体取决于单击的按钮。
只有其他页面是 login/index.html
app.js 安装/更新 service worker 的内容是这样的:
let newWorker;
function showUpdateBar() {
let snackbar = document.getElementById('snackbar');
snackbar.className = 'show';
}
// The click event on the pop up notification
document.getElementById('reload').addEventListener('click', function(){
newWorker.postMessage({ action: 'skipWaiting' });
});
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/pwa/sw.js').then(reg => {
console.log( 'ServiceWorker registration successful with scope: ', registration.scope );
reg.addEventListener('updatefound', () => {
// A wild service worker has appeared in reg.installing!
newWorker = reg.installing;
newWorker.addEventListener('statechange', () => {
// Has network.state changed?
switch (newWorker.state) {
case 'installed':
if (navigator.serviceWorker.controller) {
// new update available
showUpdateBar();
}
// No update available
break;
}
});
});
});
let refreshing;
navigator.serviceWorker.addEventListener('controllerchange', function () {
if (refreshing) return;
window.location.reload();
refreshing = true;
});
}
所以基本上我面临的问题是触发更新,当我将 v28 等版本号更改为 v29 并重新加载页面时,我收到提示,但即使我注销、登录或退出也没有收到提示并重新打开应用程序。
我该如何解决这个问题?
白猪掌柜的
相关分类