ServiceWorker.state
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2018.
La propriété en lecture seule state, rattachée à l'interface ServiceWorker, renvoie une chaîne de caractères indiquant l'état courant du service worker. Sa valeur peut être :
"installing","installed","activating","activated",- ou
"redundant".
Valeur
Une chaîne de caractères (String) qui peut valoir :
"installing"-
Le service worker est en cours d'installation. Pendant cet état,
ExtendableEvent.waitUntil()peut être appelé au sein du gestionnaire d'évènementinstallpour étendre la durée de vie du worker en installation jusqu'à ce que la promesse passée soit réussie. Cet état sert principalement à s'assurer que le service worker n'est pas actif tant que tous les caches n'ont pas été remplis. "installed"-
Dans cet état, le service worker est en attente.
"activating"-
Dans cet état, le service worker est considéré comme actif. Pendant cet état, on peut appeler
ExtendableEvent.waitUntil()dans le gestionnaire d'évènementsonactivateafin d'étendre la durée de vie du worker jusqu'à ce que la promesse passée soit réussie. Aucun évènement fonctionnel n'est diffusé tant que l'état n'est pas"activated". "activated"-
Dans cet état, le service worker est considéré comme actif et comme pouvant gérer les évènements fonctionnels.
"redundant"-
Un nouveau service worker qui remplace le service worker courant, ou le service worker courant qui est écarté en raison d'un échec d'installation.
Exemples
Le fragment de code qui suit est tiré de l'exemple registration-events (voir la démo correspondante). Le code surveille tout changement de ServiceWorker.state et renvoie la valeur.
let serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
document.querySelector("#kind").textContent = "installing";
} else if (registration.waiting) {
serviceWorker = registration.waiting;
document.querySelector("#kind").textContent = "waiting";
} else if (registration.active) {
serviceWorker = registration.active;
document.querySelector("#kind").textContent = "active";
}
if (serviceWorker) {
logState(serviceWorker.state);
serviceWorker.addEventListener("statechange", function (e) {
logState(e.target.state);
});
}
Spécifications
| Specification |
|---|
| Service Workers> # service-worker-state> |
Compatibilité des navigateurs
Chargement…