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 English Always switch to English

NotificationEvent

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 ⁨mars 2023⁩.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.

L'interface NotificationEvent représente un évènement de clic pour une notification et qui est dispatché vers le ServiceWorkerGlobalScope d'un ServiceWorker.

Cette interface hérite de l'interface ExtendableEvent.

Constructeur

NotificationEvent.NotificationEvent()

Cette méthode permet de créer un nouvel objet NotificationEvent.

Propriétés

Cet objet hérite de propriétés grâce à son ancêtre : Event.

NotificationEvent.notification Lecture seule

Cette propriété renvoie un objet Notification représentant la notification sur laquelle on a cliqué pour déclencher l'évènement.

NotificationEvent.action Lecture seule

Cette propriété renvoie une chaîne de caractères identifiant le bouton de la notification sur lequel l'utilisateur a cliqué. Cette valeur sera undefined si l'utilisateur a cliqué autre part que sur le bouton pour la notification ou si la notification ne possède pas de bouton.

Méthodes

Cet objet hérite de méthodes grâce à son parent ExtendableEvent.

ExtendableEvent.waitUntil()

Cette méthode allonge la durée de vie de l'évènement et indique qu'une tâche est toujours en cours.

Exemples

js
self.addEventListener("notificationclick", function (event) {
  console.log("Au clic sur la notification : ", event.notification.tag);
  event.notification.close();

  // On regarde ici si elle est déjà ouverte
  // et si le focus est dessus
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then(function (clientList) {
        for (var i = 0; i < clientList.length; i++) {
          var client = clientList[i];
          if (client.url == "/" && "focus" in client) return client.focus();
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});

Spécifications

Specification
Notifications API
# notificationevent

Compatibilité des navigateurs