Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
ServiceWorkerContainer
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.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
Expérimental:Il s'agit d'unetechnologie expérimentale.
Vérifiez attentivement letableau de compatibilité des navigateurs avant de l'utiliser en production.
L'interfaceServiceWorkerContainer 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éthodeServiceWorkerContainer.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.
Dans cet article
Propriétés
ServiceWorkerContainer.controllerLecture seuleRetourne un objet
ServiceWorkersi son état estactivated(le même objet retourné parServiceWorkerRegistration.active). Cette propriété retournenullsi la requête est un rechargement forcé (Majuscule + rechargement) ou si il n'y a pas de worker actif.
ServiceWorkerContainer.readyLecture seuleDétermine si oui ou non un service worker est prêt à contrôler la page. Cette propriété retourne une
Promisequi ne sera jamais rejetée, et se résoudra en unServiceWorkerRegistrationavec un worker en étatServiceWorkerRegistration.active.
Gestionnaires d'événement
ServiceWorkerContainer.oncontrollerchangeUn gestionnaire d'événement lancé quand un événement
controllerchangese produit — quand leServiceWorkerRegistrationassocié au document ajoute un nouveau worker en étatServiceWorkerRegistration.active.ServiceWorkerContainer.onerrorUn gestionnaire d'événement lancé quand un événement
errorse produit dans le service worker associé.ServiceWorkerContainer.onmessageUn gestionnaire d'événement lancé quand un événement
messagese 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
ServiceWorkerRegistrationpour unscriptURLdonné.ServiceWorkerContainer.getRegistration()Récupère un objet
ServiceWorkerRegistrationdont 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
ServiceWorkerRegistrationassociés à unServiceWorkerContainerdans un tableau. Si la méthode ne peut retourner lesServiceWorkerRegistration, elle retourne unePromise.
Exemples
Cet extrait de code provient deexemple service worker fallback-response (voirfallback-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 Nightly> # serviceworkercontainer-interface> |