Signatur
Beschreibung
Notification.maxActions ist eine statische Eigenschaft des Notification-Konstruktors. Man liest sie also direkt am Konstruktor ab und nicht an einer Instanz. Der Wert ist eine ganze Zahl und sagt, wie viele Einträge aus dem Array actions der Browser bzw. das Betriebssystem in einer Benachrichtigung tatsächlich als Schaltflächen darstellt.
Aktionen gibt es nur bei persistenten Benachrichtigungen, die man über ServiceWorkerRegistration.prototype.showNotification() anzeigt. Ein Klick auf eine Aktion löst im Service Worker das Ereignis notificationclick aus. Die Eigenschaft event.action enthält dann den Bezeichner der gewählten Aktion. Übergibt man mehr Aktionen, als maxActions erlaubt, zeigt der Browser die überzähligen ohne Meldung einfach nicht an.
In der Praxis dient die Eigenschaft dazu, das Aktions-Array vor dem Anzeigen zu kürzen oder die wichtigsten Aktionen nach vorne zu sortieren. Außerdem kann man eine Ersatzlösung anbieten, etwa einen Klick auf die ganze Benachrichtigung, der eine Auswahlseite öffnet. Das ist sinnvoll, wenn gar keine Aktionen unterstützt werden (Wert 0 oder Eigenschaft nicht vorhanden).
Rückgabewert
2. In Browsern ohne Unterstützung ist die Eigenschaft undefined.Beispiele
Unterstützung und Grenzwert abfragen
// Statisch am Konstruktor ablesen, nicht an einer Instanz
const max = 'maxActions' in Notification ? Notification.maxActions : 0;
console.log(`Maximal ${max} Aktionen pro Benachrichtigung`);
Aktionen passend kürzen und über den Service Worker anzeigen
const zeigeBestellHinweis = async () => {
const erlaubnis = await Notification.requestPermission();
if (erlaubnis !== 'granted') return;
// Nach Wichtigkeit sortiert – wichtigste zuerst
const alleAktionen = [
{ action: 'bestaetigen', title: 'Bestätigen' },
{ action: 'spaeter', title: 'Später erinnern' },
{ action: 'details', title: 'Details ansehen' }
];
const max = Notification.maxActions ?? 0;
const registrierung = await navigator.serviceWorker.ready;
await registrierung.showNotification('Neue Bestellung', {
body: 'Bestellung #4711 wartet auf Freigabe.',
actions: alleAktionen.slice(0, max),
data: { url: '/bestellungen/4711' }
});
console.log(`${Math.min(max, alleAktionen.length)} von ${alleAktionen.length} Aktionen angezeigt`);
};
zeigeBestellHinweis();
Aktionen im Service Worker auswerten (sw.js)
self.addEventListener('notificationclick', (event) => {
event.notification.close();
switch (event.action) {
case 'bestaetigen':
event.waitUntil(fetch('/api/bestellungen/4711/freigeben', { method: 'POST' }));
break;
case 'spaeter':
// z. B. später erneut erinnern
break;
default:
// Klick auf die Benachrichtigung selbst – Ersatzlösung, falls Aktionen fehlen
event.waitUntil(clients.openWindow(event.notification.data.url));
}
});
// Wichtig · Fallstricke
- Experimentell und nur eingeschränkt verfügbar: Nur Chromium-basierte Browser unterstützen die Eigenschaft. In Firefox und Safari ist sie
undefined. Deshalb immer mit'maxActions' in Notificationoder?? 0absichern. - Statisch:
new Notification(...).maxActionsergibtundefined. Richtig ist nurNotification.maxActions. - Aktionen funktionieren nur mit
showNotification()über einen Service Worker. Übergibt manactionsannew Notification(), wird einTypeErrorausgelöst. - Der Wert kann je nach Plattform und Betriebssystem unterschiedlich sein, etwa zwischen Desktop und Android. Deshalb nie einen festen Wert annehmen.
- Zu viele Aktionen führen zu keinem Fehler. Die überzähligen werden einfach nicht angezeigt. Also die wichtigsten Aktionen an den Anfang des Arrays stellen.
- Die Eigenschaft ist auch im Service-Worker-Kontext verfügbar. Man kann sie also direkt vor
self.registration.showNotification()abfragen.