Start · Sprachen · JavaScript · Referenz · CrashReportContext.delete()

CrashReportContext.delete()

Methode

Entfernt ein zuvor mit <code>set()</code> gespeichertes Schlüssel-Wert-Paar aus dem Absturzbericht-Kontext, sodass es nicht mehr in künftigen Crash-Reports erscheint.

seit JavaScript Experimentell: Chromium-basierte Browser (Crash Re Kategorie: webapi

Signatur

CrashReportContext.prototype.delete(key)

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

Typ
void
Beschreibung
Gibt 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');
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);
z. B. 8000 6000

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 window prüfen.
  • Initialisierung nötig: Ohne vorheriges await window.crashReport.initialize() kann der Aufruf von set()/delete() eine Exception werfen (z. B. NotAllowedError). Das Promise von initialize() 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.