- From: alancutter <notifications@github.com>
- Date: Sun, 13 Nov 2022 20:22:23 -0800
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 14 November 2022 04:22:36 UTC
Currently if a first page load wants to register a service worker and immediately be controlled by it it has to do quite a bit of boilerplate:
```js
// serviceworker.js
self.addEventListener('activate', (event) => {
event.waitUntil(clients.claim());
});
```
```js
// main.js
async function registerServiceWorker() {
await navigator.serviceWorker.register('serviceworker.js');
const registration = await navigator.serviceWorker.ready;
const worker = registration.active;
if (worker.state === 'activated') {
return;
}
await new Promise(resolve => {
worker.addEventListener('statechange', () => {
if (worker.state = 'activated') {
resolve();
}
});
});
}
```
We could simplify this by adding a new option to register that does the same thing (including the SW side) and reduce all this down to:
```js
// main.js
await navigator.serviceWorker.register('serviceworker.js', { claim: true });
```
--
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/issues/1661
You are receiving this because you are subscribed to this thread.
Message ID: <w3c/ServiceWorker/issues/1661@github.com>
Received on Monday, 14 November 2022 04:22:36 UTC