- From: AnthumChris <notifications@github.com>
- Date: Sat, 25 Apr 2020 21:21:28 -0700
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/ServiceWorker/issues/1282/619479312@github.com>
Potential current workaround: Install the SW alone first, then reload the page. The SW then serves content for a SW-enabled page to intercept every request. See usage at [fetch-progress.anthum.com](https://fetch-progress.anthum.com/sw-basic/) (open in Incognito mode to force SW install) ### index.html ```html <p>Installing Service Worker, please wait...</p> <script> navigator.serviceWorker.register('sw.js') .then(reg => { if (reg.installing) { const sw = reg.installing || reg.waiting; sw.onstatechange = function() { if (sw.state === 'installed') { // SW installed. Reload for SW intercept serving SW-enabled page. window.location.reload(); } }; } else if (reg.active) { // something's not right or SW is bypassed. previously-installed SW should have redirected this request to different page handleError(new Error('Service Worker is installed and not redirecting.')) } }) .catch(handleError) function handleError(error) {} </script> ``` ### sw.js ```js self.addEventListener('fetch', event => { const url = event.request.url; const scope = self.registration.scope; // detect "index.html" or URI ending in "/" if (url === scope || url === scope+'index.html') { // serve index.html with service-worker-enabled page const newUrl = scope+'index-sw-enabled.html'; event.respondWith(fetch(newUrl)) } else { // process other files here } }); ``` ### index-sw-enabled.html _This page loads in browser as URI `index.html` after SW installs. Put intended app/page content here._ -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/ServiceWorker/issues/1282#issuecomment-619479312
Received on Sunday, 26 April 2020 04:21:41 UTC