Start · Sprachen · JavaScript · Referenz · Notification.silent

Notification.silent

Eigenschaft

Schreibgeschützte Eigenschaft: Zeigt an, ob eine Benachrichtigung stumm ist, also ohne Ton und Vibration erscheint, egal wie das Gerät eingestellt ist.

seit JavaScript Baseline 2023 (Chromium 43+, Firefox 111+, Safari Kategorie: webapi

Signatur

Notification.prototype.silent

Beschreibung

Die Eigenschaft silent einer Notification-Instanz gibt den Wert zurück, der beim Erzeugen der Benachrichtigung über die Option silent gesetzt wurde. Ist er true, soll das System die Benachrichtigung ohne Ton und ohne Vibration anzeigen, auch wenn das Gerät sonst Töne abspielen würde.

Die Eigenschaft ist schreibgeschützt. Den Wert legt man ausschließlich über das Options-Objekt fest, entweder bei new Notification(title, { silent: true }) oder bei ServiceWorkerRegistration.prototype.showNotification(). Wurde die Option nicht angegeben, liefert die Eigenschaft null. Dann entscheiden Browser und Betriebssystem nach ihren Standardeinstellungen.

Typische Einsatzfälle sind wenig dringende Hinweise, die nicht stören sollen: etwa Hintergrund-Synchronisation, Fortschrittsmeldungen oder Updates, die ein bestehendes Tag ersetzen. Zusammen mit tag und renotify lässt sich genau steuern, wann Nutzer aktiv aufmerksam gemacht werden.

Rückgabewert

Typ
boolean | null
Beschreibung
true: Die Benachrichtigung soll stumm sein. false: Ton und Vibration sind ausdrücklich erlaubt. null: Die Option wurde nicht gesetzt, das System verhält sich nach seinen Standardeinstellungen.

Beispiele

Stumme Benachrichtigung erstellen und Eigenschaft prüfen

const permission = await Notification.requestPermission();

if (permission === 'granted') {
  const n = new Notification('Synchronisierung abgeschlossen', {
    body: '12 neue Einträge wurden geladen.',
    silent: true
  });
  console.log(n.silent);
}
true

Standardwert ohne gesetzte Option

if (Notification.permission === 'granted') {
  const n = new Notification('Neue Nachricht');
  // Option nicht angegeben -> null (je nach Browser-Version auch false)
  console.log(n.silent);
}
null

Im Service Worker: nur dringende Meldungen mit Ton

// sw.js
self.addEventListener('push', (event) => {
  const data = event.data?.json() ?? {};
  const isUrgent = data.priority === 'high';

  event.waitUntil(
    self.registration.showNotification(data.title ?? 'Update', {
      body: data.body,
      tag: 'status-update',
      silent: !isUrgent
    })
  );
});

// Später auslesen:
const list = await self.registration.getNotifications({ tag: 'status-update' });
list.forEach((n) => console.log(n.title, 'stumm:', n.silent));
Update stumm: true

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie n.silent = false hat keine Wirkung, im Strict Mode wirft sie einen TypeError. Wer den Wert ändern will, muss eine neue Benachrichtigung erzeugen.
  • Widerspruch zu vibrate: Werden silent: true und ein nicht leeres vibrate-Muster zusammen angegeben, wirft der Konstruktor bzw. showNotification() einen TypeError.
  • Nur ein Hinweis an das System: Betriebssysteme wie macOS, Windows oder Android können die Option unterschiedlich umsetzen oder übergehen, zum Beispiel wegen „Nicht stören“-Modi oder eigener Einstellungen pro App.
  • Kompatibilität: Ältere Browser-Versionen geben statt null den Wert false zurück, wenn die Option fehlt. Vor der Nutzung sollte man die Unterstützung prüfen, etwa mit 'silent' in Notification.prototype.
  • Benachrichtigungen setzen eine Erlaubnis (Notification.requestPermission()) und einen sicheren Kontext (HTTPS) voraus. Auf Android-Chrome funktioniert new Notification() nicht, dort ist showNotification() über einen Service Worker nötig.