Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Les API Web
  3. ExtendableEvent

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

ExtendableEvent

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.

L'interfaceExtendableEvent étend la durée de vie des événementsinstall etactivate envoyés dans la portée globale dans le cycle de vie du service worker. Elle s'assure que les événements fonctionnels (commeFetchEvent) ne soient pas distribués avant de mettre à jour les schémas de la base de données et de vider l'ancien cache.

SiwaitUntil() est appelé en dehors du gestionnaireExtendableEvent, le navigateur doit lever une exceptionInvalidStateError ; notez que plusieurs appels vont s'empiler, et que les promesses de résultat seront ajoutées à la liste despromesses à vie étendue.

Note :Le comportement décrit dans le paragraphe précédent a été corrigé dans Firefox 43 (voirle bug 1180274).

Cette interface hérite de l'interfaceEvent.

must be a string

Note :Cette interface est disponible seulement quand la portée globale estServiceWorkerGlobalScope. Elle n'est pas disponible quand c'est un objetWindow ou un autre type de worker.

Constructeur

ExtendableEvent()

Crée un nouvel objetExtendableEvent.

Propriétés

N'implémente pas de propriétés spécifiques, mais hérite de celles de son parent,Event.

Méthodes

Hérite des méthodes de son parentEvent.

ExtendableEvent.waitUntil()

Étend la durée de vie de l'évènement. Cette méthode doit être appelée dans le gestionnaire d'évènementinstall pour le worker en cours d'installation (voirinstalling) et dans le gestionnaire d'évènementactivate pour le worker actif (voiractive).

Exemples

Ce fragment de code est tiré del'exemple du service worker utilisant prefetch (voirl'exemple en live). Ce code appelleExtendableEvent.waitUntil() dans le gestionnaire d'évènementServiceWorkerGlobalScope.oninstall, retardant le traitement du workerServiceWorkerRegistration.installing après l'installation jusqu'à ce que la promesse se résolve. La promesse se résout quand toutes les ressources ont été récupérées et mises en cache, ou quand une exception est levée.

Ce fragment de code montre aussi une bonne pratique pour construire des versions de cache utilisées par le service worker. Même s'il n'y a qu'un cache dans cet exemple, la même approche peut être utilisée pour plusieurs caches. Il lie un identifiant court pour un cache avec un nom de cache spécifique et versionné.

js
var CACHE_VERSION = 1;var CURRENT_CACHES = {  prefetch: "prefetch-cache-v" + CACHE_VERSION,};self.addEventListener("install", function (event) {  var urlsToPrefetch = [    "./static/pre_fetched.txt",    "./static/pre_fetched.html",    "https://www.chromium.org/_/rsrc/1302286216006/config/customLogo.gif",  ];  console.log(    "Installation en cours. Ressources à pré-charger :",    urlsToPrefetch,  );  event.waitUntil(    caches      .open(CURRENT_CACHES["prefetch"])      .then(function (cache) {        cache          .addAll(            urlsToPrefetch.map(function (urlToPrefetch) {              return new Request(urlToPrefetch, { mode: "no-cors" });            }),          )          .then(function () {            console.log(              "Toutes les ressources ont été chargées et mises en cache.",            );          });      })      .catch(function (error) {        console.error("Erreur de pré-chargement :", error);      }),  );});

Attention :Au moment du chargement des ressources, il est très important d'utiliser{mode: 'no-cors'} s'il y a une chance que la ressource soit servie depuis un serveur qui ne supporte pas leCORS. Dans cet exemple,www.chromium.org ne prend pas en charge le CORS.

Spécifications

Specification
Service Workers Nightly
# extendableevent-interface

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2026 Movatter.jp