Signatur
Beschreibung
Die Methode delete() des Interfaces CrashReportContext löscht einen Eintrag, der zuvor mit CrashReportContext.set() hinterlegt wurde. Das CrashReportContext-Objekt erreicht man über window.crashReport. Die dort gespeicherten Schlüssel-Wert-Paare werden vom Browser vorgehalten und bei einem Absturz des Renderer-Prozesses (Tab-Crash, Out-of-Memory usw.) an den Absturzbericht angehängt, der über die Reporting API an den konfigurierten Endpunkt geschickt wird.
Das ist nützlich, um Diagnoseinformationen zu melden, die nur zeitweise relevant sind: etwa die aktuell geöffnete Ansicht, eine laufende rechenintensive Operation oder ein aktiver Feature-Flag. Ist dieser Zustand vorbei, sollte man den Schlüssel mit delete() wieder entfernen, damit ein späterer Absturzbericht keine veralteten und damit irreführenden Angaben enthält.
Vor der Nutzung muss der Speicher mit await window.crashReport.initialize(length) eingerichtet werden. Existiert der Schlüssel nicht, passiert nichts. Die Methode arbeitet synchron und gibt undefined zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $key Pflicht | string | Name des Schlüssels, der aus dem Absturzbericht-Kontext entfernt werden soll. |
Rückgabewert
undefined zurück.Beispiele
Einfaches Setzen und Löschen eines Eintrags
// Speicher für Crash-Kontext einrichten (Größe in Bytes)
await window.crashReport.initialize(1024);
window.crashReport.set('view', 'checkout');
// ... Nutzer verlässt den Checkout
window.crashReport.delete('view');
console.log('Kontext "view" entfernt');
Temporären Zustand während einer teuren Operation melden
const runWithCrashContext = async (label, task) => {
window.crashReport.set('active-task', label);
try {
return await task();
} finally {
// Auch bei Fehlern wieder aufräumen
window.crashReport.delete('active-task');
}
};
await window.crashReport.initialize(2048);
const result = await runWithCrashContext('image-decode', async () => {
const res = await fetch('/grosses-bild.avif');
const blob = await res.blob();
return createImageBitmap(blob);
});
console.log(result.width, result.height);
Mit Feature-Erkennung absichern
const crashContext = {
ready: false,
async init() {
if (!('crashReport' in window)) return;
try {
await window.crashReport.initialize(1024);
this.ready = true;
} catch (err) {
console.warn('Crash-Kontext nicht verfügbar:', err.name);
}
},
set(key, value) { if (this.ready) window.crashReport.set(key, value); },
delete(key) { if (this.ready) window.crashReport.delete(key); }
};
await crashContext.init();
crashContext.set('editor-mode', 'wysiwyg');
crashContext.delete('editor-mode'); // funktioniert still auch ohne API-Unterstützung
// Wichtig · Fallstricke
- Experimentell: Die API ist bislang nur in Chromium-basierten Browsern verfügbar (und dort teils hinter Flags bzw. Origin Trial). Firefox und Safari unterstützen sie nicht. Also immer vorher mit
'crashReport' in windowprüfen. - Initialisierung nötig: Ohne vorheriges
await window.crashReport.initialize()kann der Aufruf vonset()/delete()eine Exception werfen (z. B.NotAllowedError). Das Promise voninitialize()muss erledigt sein, bevor man die Methoden benutzt. - Das Löschen eines nicht vorhandenen Schlüssels ist kein Fehler.
- Das Löschen wirkt nur auf künftige Absturzberichte. Bereits verschickte Berichte bleiben unverändert.
- Datenschutz: Keine personenbezogenen Daten oder Geheimnisse (Tokens, E-Mail-Adressen) im Crash-Kontext ablegen. Sensible Werte so schnell wie möglich mit
delete()entfernen. - Ein Aufräumen in
finally-Blöcken stellt sicher, dass kein veralteter Kontext hängen bleibt.