Start · Sprachen · JavaScript · Referenz · Notification: close

Notification: close

Ereignis

Das <code>close</code>-Ereignis einer <code>Notification</code> wird ausgelöst, wenn die Benachrichtigung geschlossen wird, entweder durch den Nutzer, das System oder durch <code>close()</code>.

seit JavaScript Baseline: alle modernen Desktop-Browser (auf Mobil Kategorie: webapi

Signatur

notification.addEventListener("close", handler)

Beschreibung

Das Ereignis close tritt an einem Notification-Objekt auf, sobald die zugehörige Systembenachrichtigung nicht mehr angezeigt wird. Das passiert, wenn der Nutzer die Benachrichtigung wegklickt, wenn das Betriebssystem sie ausblendet oder wenn das Skript selbst notification.close() aufruft.

Einen Handler registrieren Sie mit addEventListener("close", handler) oder über die Eigenschaft onclose. Der Handler bekommt ein einfaches Event-Objekt. Über event.target erreichen Sie die betroffene Benachrichtigung und damit Werte wie tag, data oder title.

Typische Einsatzzwecke sind Aufräumarbeiten, zum Beispiel Timer beenden oder Referenzen entfernen, und Statistik, etwa die Frage, ob eine Benachrichtigung ignoriert oder geschlossen wurde. Ein Grund für das Schließen wird nicht mitgeliefert. Ob der Nutzer, das System oder der Code die Benachrichtigung geschlossen hat, lässt sich also nicht direkt erkennen.

Das Ereignis gilt nur für Benachrichtigungen, die mit new Notification() im Fenster-Kontext erzeugt wurden. Bei Benachrichtigungen, die ein Service Worker mit registration.showNotification() anzeigt, verwenden Sie stattdessen das Ereignis notificationclose im Service Worker.

Parameter

Name Typ Default Beschreibung
$type Pflicht string Der Ereignisname, hier immer "close".
$handler Pflicht (event: Event) => void Callback, der beim Schließen aufgerufen wird. event.target ist die betroffene Notification.
$options boolean | AddEventListenerOptions false Optionale Listener-Optionen wie once oder signal.

Rückgabewert

Typ
void
Beschreibung
addEventListener hat keinen Rückgabewert. Der Handler erhält ein Event ohne zusätzliche Eigenschaften.

Beispiele

Schließen per addEventListener protokollieren

const zeigeHinweis = async () => {
  const erlaubnis = await Notification.requestPermission();
  if (erlaubnis !== "granted") return;

  const n = new Notification("Neue Nachricht", {
    body: "Anna hat Ihnen geschrieben.",
    tag: "chat-42"
  });

  n.addEventListener("close", (event) => {
    console.log(`Benachrichtigung ${event.target.tag} geschlossen`);
  }, { once: true });
};

zeigeHinweis();
Benachrichtigung chat-42 geschlossen

onclose-Eigenschaft und automatisches Schließen

const n = new Notification("Upload abgeschlossen", { body: "3 Dateien hochgeladen." });

// Nach 5 Sekunden automatisch schließen
const timer = setTimeout(() => n.close(), 5000);

n.onclose = () => {
  clearTimeout(timer); // falls der Nutzer vorher schließt
  console.log("Benachrichtigung entfernt, Timer aufgeräumt");
};
Benachrichtigung entfernt, Timer aufgeräumt

Klick von Ignorieren unterscheiden und Listener entfernen

const n = new Notification("Erinnerung", { body: "Meeting in 10 Minuten" });
let geklickt = false;

const beiKlick = () => {
  geklickt = true;
  window.focus();
  n.close();
};

const beiSchliessen = () => {
  console.log(geklickt ? "Nutzer hat reagiert" : "Benachrichtigung ignoriert/weggeklickt");
  n.removeEventListener("click", beiKlick);
  n.removeEventListener("close", beiSchliessen);
};

n.addEventListener("click", beiKlick);
n.addEventListener("close", beiSchliessen);
Nutzer hat reagiert

// Wichtig · Fallstricke

  • Kein Grund angegeben: Das Ereignis sagt nicht, ob der Nutzer, das System oder close() die Benachrichtigung geschlossen hat. Merken Sie sich das bei Bedarf selbst, etwa mit einem Flag.
  • Nicht zuverlässig: Manche Betriebssysteme verschieben Benachrichtigungen ins Benachrichtigungszentrum statt sie zu schließen (z. B. macOS, Windows). Dann kommt close verspätet, sobald die Seite geschlossen wird oder gar nicht. Wichtige Geschäftslogik sollte deshalb nicht von diesem Ereignis abhängen.
  • Nicht bei jedem Neuladen: Wenn die Seite geschlossen oder neu geladen wird, gehen die Handler verloren.
  • Service Worker: Für Benachrichtigungen, die mit ServiceWorkerRegistration.showNotification() angezeigt werden, gilt stattdessen das Ereignis notificationclose im Service-Worker-Kontext.
  • Mobil: Chrome für Android erlaubt new Notification() nicht und wirft einen TypeError. Dort funktionieren Benachrichtigungen nur über einen Service Worker.
  • Benachrichtigungen setzen einen sicheren Kontext (HTTPS) und eine erteilte Berechtigung voraus (Notification.permission === "granted").