MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Cette traduction est incomplète. Aidez à traduire cet article depuis l'anglais.

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 est activated (le même objet retourné par ServiceWorkerRegistration.active). Cette propriété retourne null 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 un ServiceWorkerRegistration avec un worker en état ServiceWorkerRegistration.active.

Gestionnaires d'événement

ServiceWorkerContainer.oncontrollerchange
Un gestionnaire d’événement lancé quand un événement controllerchange se produit — quand le ServiceWorkerRegistration associé au document ajoute un nouveau worker en état ServiceWorkerRegistration.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’objet ServiceWorkerContainer (e.g. par un appel à MessagePort.postMessage().)

Méthodes

ServiceWorkerContainer.register() 
Crée ou met à jour un ServiceWorkerRegistration pour un scriptURL 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 un ServiceWorkerRegistration, elle retourne une Promise
ServiceWorkerContainer.getRegistrations()
Retourne tous les  ServiceWorkerRegistration associés à un ServiceWorkerContainer dans un tableau. Si la méthode ne peut retourner les ServiceWorkerRegistration, elle retourne une Promise

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

Spécification Status Commentaires
Service Workers
La définition de 'ServiceWorkerContainer' dans cette spécification.
Version de travail Définition initiale.

Compatibilité navigateurs

Fonctionnalités Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support basique 40.0 44.0 (44.0)[1] Pas de support 24 Pas de support
Feature Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Support basique ? 44.0 (44.0) (Oui) Pas de support ? Pas de support ?

[1] Les service workers (et le Push) ont étés désactivé dans Firefox 45 and 52 Extended Support Releases (ESR.)

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : Tranber0
 Dernière mise à jour par : Tranber0,