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

SharedStorage.delete()

Methode

Löscht ein bestehendes Schlüssel-Wert-Paar aus dem Shared Storage des aktuellen Ursprungs und gibt ein <code>Promise</code> zurück.

seit JavaScript Experimentell: nur Chromium (Chrome 115+ mit Priva deprecated seit ja Kategorie: webapi

Signatur

SharedStorage.prototype.delete(key, options)

Beschreibung

Die Methode delete() der SharedStorage-Schnittstelle entfernt einen einzelnen Eintrag aus dem Shared Storage des aktuellen Ursprungs. Shared Storage gehört zur Privacy Sandbox von Chrome. Die API bietet einen Speicher, der nicht nach Top-Level-Website getrennt ist. Websites können damit über Seitengrenzen hinweg Daten ablegen, etwa für Frequency Capping oder A/B-Tests. Lesen dürfen sie diese Daten aber nur in einer abgeschotteten Umgebung, dem Worklet.

Schreiben und Löschen ist dagegen direkt aus dem normalen Browsing-Kontext über window.sharedStorage.delete() möglich. Innerhalb eines Shared-Storage-Worklets steht die Methode ebenfalls zur Verfügung (sharedStorage.delete() im SharedStorageWorkletGlobalScope). Existiert der Schlüssel nicht, passiert nichts. Das Promise wird trotzdem erfüllt.

Typische Einsatzfälle: Ein Zähler oder ein Zustand soll zurückgesetzt werden, etwa nach Ablauf einer Kampagne. Oder eine Nutzerin widerruft ihre Einwilligung, und personenbezogene Kennungen sollen gezielt entfernt werden. Wenn Sie alle Einträge löschen wollen, verwenden Sie SharedStorage.clear().

Parameter

Name Typ Default Beschreibung
$key Pflicht string Der Schlüssel des Eintrags, der gelöscht werden soll. Er darf höchstens 1024 UTF-16-Codeeinheiten lang sein.
$options object {} Optionales Objekt mit Einstellungen. withLock (string) ist der Name einer Web Lock-Ressource. Die Sperre wird vor dem Löschen angefordert. So werden gleichzeitige Zugriffe aus mehreren Kontexten nacheinander abgearbeitet. Die Option gibt es erst in neueren Chrome-Versionen.

Rückgabewert

Typ
Promise<undefined>
Beschreibung
Ein Promise, das mit undefined erfüllt wird, sobald der Eintrag entfernt ist oder nicht existierte. Es wird mit einem TypeError abgelehnt, wenn der Schlüssel zu lang ist, Shared Storage deaktiviert ist (z. B. durch die Nutzer-Einstellungen) oder der aufrufende Ursprung nicht für die Privacy Sandbox angemeldet ist.

Beispiele

Einzelnen Eintrag löschen

const resetExperiment = async () => {
  if (!('sharedStorage' in window)) {
    console.log('Shared Storage wird nicht unterstützt');
    return;
  }
  try {
    await window.sharedStorage.delete('ab-test-gruppe');
    console.log('Eintrag gelöscht');
  } catch (err) {
    console.error('Löschen fehlgeschlagen:', err.name);
  }
};

resetExperiment();
Eintrag gelöscht

Kennungen nach widerrufener Einwilligung entfernen

const KEYS_TO_REMOVE = ['nutzer-segment', 'kampagne-2024', 'impression-count'];

const onConsentRevoked = async () => {
  if (!window.sharedStorage) return;
  // delete() läuft auch dann ohne Fehler durch, wenn ein Schlüssel nicht existiert
  await Promise.all(KEYS_TO_REMOVE.map((key) => window.sharedStorage.delete(key)));
  console.log(`${KEYS_TO_REMOVE.length} Einträge entfernt`);
};

document.querySelector('#consent-widerrufen')
  ?.addEventListener('click', onConsentRevoked);
3 Einträge entfernt

Löschen innerhalb eines Worklets (Frequency Capping zurücksetzen)

// frequency-worklet.js – wird per sharedStorage.worklet.addModule() geladen
class ResetCapOperation {
  async run(data) {
    const count = Number(await sharedStorage.get('impressions')) || 0;
    if (count >= data.limit) {
      await sharedStorage.delete('impressions');
    }
  }
}
register('reset-cap', ResetCapOperation);

// Hauptseite:
// await window.sharedStorage.worklet.addModule('/frequency-worklet.js');
// await window.sharedStorage.run('reset-cap', { data: { limit: 5 } });

Löschen mit Web Lock gegen gleichzeitige Zugriffe

const clearCounterSafely = async () => {
  await window.sharedStorage.delete('zaehler', { withLock: 'zaehler-lock' });
  console.log('Zähler zurückgesetzt');
};

clearCounterSafely();
Zähler zurückgesetzt

// Wichtig · Fallstricke

  • Experimentell und nur in Chromium verfügbar: Firefox und Safari unterstützen Shared Storage nicht. Google hat angekündigt, mehrere Privacy-Sandbox-APIs einzustellen, darunter Shared Storage. Setzen Sie die API in Produktivcode deshalb nicht als verlässliche Grundlage ein und prüfen Sie immer vorher mit 'sharedStorage' in window, ob sie vorhanden ist.
  • Anmeldung erforderlich: Der aufrufende Ursprung muss für die Privacy Sandbox angemeldet sein und die Attestierung durchlaufen haben. Außerdem muss der Browser Shared Storage zulassen. Sonst wird das Promise mit einem TypeError abgelehnt. Behandeln Sie diesen Fall immer mit try/catch.
  • Die Richtlinie Permissions-Policy: shared-storage kann die API in Iframes sperren.
  • Löschen geht auch über HTTP-Antwort-Header, und zwar mit Shared-Storage-Write: delete;key="name". Das funktioniert bei fetch()-Aufrufen mit sharedStorageWritable: true und bei Iframes und Bildern mit dem Attribut sharedstoragewritable.
  • Ob der Eintrag vorher existiert hat, erfahren Sie nicht: Das Promise wird in beiden Fällen erfüllt. Außerhalb von Worklets gibt es kein Lesen, also kann man vorher auch nicht nachsehen.
  • Schlüssel, die länger als 1024 Zeichen sind, führen zur Ablehnung.