按照此鏈接https://github.com/deanhume/pwa-update-available,我正在嘗試實施服務工作者更新,但我面臨諸如事件更新未觸發之類的問題,我認為這與我的應用程序設計,基本上是一個 SPA,意味著我總是在 index.html 上,它的行為類似于 app-shell,我正在推送內容區域中的內容,具體取決于單擊的按鈕。只有其他頁面是 login/index.htmlapp.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 并重新加載頁面時,我收到提示,但即使我注銷、登錄或退出也沒有收到提示并重新打開應用程序。我該如何解決這個問題?
Service Worker 更新事件觸發器
慕村225694
2021-12-12 10:08:06