Start · Sprachen · JavaScript · Referenz · Notification.requireInteraction

Notification.requireInteraction

Eigenschaft

Schreibgeschützter boolescher Wert, der angibt, ob eine Benachrichtigung sichtbar bleibt, bis der Nutzer sie anklickt oder schließt.

seit JavaScript Chrome 47+, Edge 17+, Opera; nicht in Firefox und Kategorie: webapi

Signatur

Notification.requireInteraction

Beschreibung

Die schreibgeschützte Eigenschaft requireInteraction des Notification-Interfaces zeigt an, ob die Benachrichtigung aktiv bleiben soll, bis der Nutzer etwas mit ihr macht, also sie anklickt oder schließt. Normalerweise blendet das Betriebssystem oder der Browser eine Benachrichtigung nach einigen Sekunden aus. Steht der Wert auf true, soll das nicht passieren.

Der Wert wird beim Erzeugen über die gleichnamige Option requireInteraction im Optionsobjekt von new Notification(title, options) oder ServiceWorkerRegistration.showNotification(title, options) festgelegt. Die Eigenschaft liest diese Einstellung nur aus und lässt sich danach nicht mehr ändern.

Sinnvoll ist das bei Meldungen, die der Nutzer nicht verpassen darf: eingehende Anrufe, Kalendererinnerungen, Sicherheitswarnungen oder Aufgaben, die eine Bestätigung brauchen. Für reine Hinweise wie „Download fertig“ sollte man die Option nicht setzen, weil dauerhaft stehende Benachrichtigungen schnell stören.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn die Benachrichtigung bis zu einer Aktion des Nutzers sichtbar bleiben soll, sonst false (Standardwert).

Beispiele

Dauerhafte Benachrichtigung erzeugen und Eigenschaft auslesen

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

  const n = new Notification('Meeting in 5 Minuten', {
    body: 'Sprint-Planung im Raum 2.14',
    requireInteraction: true
  });

  console.log(n.requireInteraction);
};

zeigeErinnerung();
true // in Chrome/Edge; in Firefox/Safari undefined

Unterstützung vorher prüfen

const unterstuetztRequireInteraction =
  'Notification' in window &&
  'requireInteraction' in Notification.prototype;

console.log(unterstuetztRequireInteraction
  ? 'Benachrichtigungen können sichtbar bleiben.'
  : 'Fallback: Hinweis zusätzlich in der Seite anzeigen.');
Benachrichtigungen können sichtbar bleiben. // z. B. in Chrome

Im Service Worker bei Push-Nachrichten

// sw.js
self.addEventListener('push', (event) => {
  const daten = event.data?.json() ?? { titel: 'Eingehender Anruf' };

  event.waitUntil(
    self.registration.showNotification(daten.titel, {
      body: 'Tippen, um anzunehmen',
      tag: 'anruf',
      requireInteraction: true
    })
  );
});

self.addEventListener('notificationclick', (event) => {
  console.log('Bleibt sichtbar:', event.notification.requireInteraction);
  event.notification.close();
  event.waitUntil(clients.openWindow('/anruf'));
});
Bleibt sichtbar: true

// Wichtig · Fallstricke

  • Browserunterstützung: Chromium-Browser (Chrome, Edge, Opera) unterstützen die Eigenschaft. Firefox und Safari werten die Option nicht aus, dort ist die Eigenschaft meist undefined. Wie lange die Meldung wirklich sichtbar bleibt, hängt außerdem vom Betriebssystem ab.
  • Nur ein Wunsch an den Browser: Unter macOS kommt es zum Beispiel auf den eingestellten Benachrichtigungsstil an („Banner“ oder „Hinweise“). Unter Android und in manchen Linux-Desktops wird die Einstellung teilweise ignoriert.
  • Schreibgeschützt: Wer nachträglich n.requireInteraction = false setzt, ändert nichts, im Strict Mode wird eventuell sogar ein TypeError ausgelöst. Um eine Meldung zu entfernen, ruft man close() auf.
  • Nutzbarkeit: Die Option nur sparsam einsetzen. Zu viele dauerhafte Meldungen führen oft dazu, dass Nutzer die Berechtigung wieder entziehen.
  • Die Eigenschaft gibt es nur in sicheren Kontexten (HTTPS), und Benachrichtigungen setzen die Berechtigung granted voraus.