ServiceWorkerContainer
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
Expérimental: Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
L'interface ServiceWorkerContainer
de l'API ServiceWorker fournit un objet représentant le service worker comme une unité globale de l'écosystème réseau, incluant des fonctionnalités pour enregistrer, désenregistrer et mettre à jour des services workers, et accéder à l'état des services workers et de leurs enregistrements.
Parmi le plus important, cette interface expose la méthode ServiceWorkerContainer.register(scriptURL, scope[, base])
utilisée pour enregistrer les services workers, et la propriété ServiceWorkerContainer.controller
utilisée pour déterminer si oui ou non la page courante est activement conrôlée.
Propriétés
ServiceWorkerContainer.controller
Lecture seule-
Retourne un objet
ServiceWorker
si son état estactivated
(le même objet retourné parServiceWorkerRegistration.active
). Cette propriété retournenull
si la requête est un rechargement forcé (Majuscule + rechargement) ou si il n'y a pas de worker actif.
ServiceWorkerContainer.ready
Lecture seule-
Détermine si oui ou non un service worker est prêt à contrôler la page. Cette propriété retourne une
Promise
qui ne sera jamais rejetée, et se résoudra en unServiceWorkerRegistration
avec un worker en étatServiceWorkerRegistration.active
.
Gestionnaires d'événement
ServiceWorkerContainer.oncontrollerchange
-
Un gestionnaire d'événement lancé quand un événement
controllerchange
se produit — quand leServiceWorkerRegistration
associé au document ajoute un nouveau worker en étatServiceWorkerRegistration.active
. ServiceWorkerContainer.onerror
-
Un gestionnaire d'événement lancé quand un événement
error
se produit dans le service worker associé. ServiceWorkerContainer.onmessage
-
Un gestionnaire d'événement lancé quand un événement
message
se produit — quand des messages entrants sont reçus par l'objetServiceWorkerContainer
(e.g. par un appel àMessagePort.postMessage()
.)
Méthodes
ServiceWorkerContainer.register()
-
Crée ou met à jour un
ServiceWorkerRegistration
pour unscriptURL
donné. ServiceWorkerContainer.getRegistration()
-
Récupère un objet
ServiceWorkerRegistration
dont l'URL de la portée correspond à l'URL du document fourni. Si la méthode ne peut retourner unServiceWorkerRegistration
, elle retourne unePromise
. ServiceWorkerContainer.getRegistrations()
-
Retourne tous les
ServiceWorkerRegistration
associés à unServiceWorkerContainer
dans un tableau. Si la méthode ne peut retourner lesServiceWorkerRegistration
, elle retourne unePromise
.
Exemples
Cet extrait de code provient de exemple service worker fallback-response (voir fallback-response live). Le code test si le navigateur supporte les services workers. Alors le code enregistre le service worker et détermine si la page est activement contrôlée par le service worker. Si elle ne l'est pas, il invite l'utilisateur à recharger la page pour permettre au service worker de prendre le contrôle. Ce code indique aussi les échecs d'enregistrement.
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("service-worker.js", { scope: "./" })
.then(function () {
if (navigator.serviceWorker.controller) {
document.querySelector("#status").textContent =
"The service worker is currently handling network operations.";
showRequestButtons();
} else {
document.querySelector("#status").textContent =
"Please reload this page to allow the service worker to handle network operations.";
}
})
.catch(function (error) {
document.querySelector("#status").textContent = error;
});
} else {
var aElement = document.createElement("a");
aElement.href =
"http://www.chromium.org/blink/serviceworker/service-worker-faq";
aElement.textContent = "unavailable";
document.querySelector("#status").appendChild(aElement);
}
Spécifications
Specification |
---|
Service Workers # serviceworkercontainer-interface |
Compatibilité des navigateurs
BCD tables only load in the browser