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

SharedStorage.clear()

Methode

Löscht alle Einträge im gemeinsamen Speicher (Shared Storage) des aktuellen Ursprungs und gibt ein <code>Promise</code> zurück.

seit JavaScript Experimentell: nur Chromium-Browser (Chrome/Edge 1 deprecated seit ja Kategorie: webapi

Signatur

SharedStorage.prototype.clear()

Beschreibung

Die Methode clear() der Schnittstelle SharedStorage entfernt alle Schlüssel-Wert-Paare, die der aktuelle Ursprung im Shared Storage abgelegt hat. Shared Storage gehört zur Privacy Sandbox. Anders als localStorage ist er nicht nach Top-Level-Site getrennt: Ein Ursprung kann dort Daten über mehrere Websites hinweg speichern. Diese Daten lassen sich aber nur in einer abgeschotteten Umgebung, dem Shared Storage Worklet, lesen.

Aufrufen kannst du clear() an zwei Stellen: im Hauptkontext über window.sharedStorage.clear() (Schnittstelle WindowSharedStorage) oder innerhalb einer Worklet-Operation über das globale sharedStorage-Objekt (Schnittstelle WorkletSharedStorage). Die Methode eignet sich, um Zustand vollständig zurückzusetzen, etwa beim Widerruf der Einwilligung, beim Start einer neuen A/B-Test-Kampagne oder beim Wechsel auf ein neues Datenschema.

Einzelne Einträge entfernst du besser mit delete(key). clear() betrifft immer den gesamten Speicher des Ursprungs, der die Methode aufruft. Bei Iframes oder Skripten von Dritten ist das der Ursprung des ausführenden Kontexts, nicht zwingend der Ursprung der Seite.

Rückgabewert

Typ
Promise<undefined>
Beschreibung
Ein Promise, das mit undefined erfüllt wird, sobald der Löschauftrag angenommen wurde. Es wird mit einem TypeError abgelehnt, wenn Shared Storage nicht verfügbar ist, zum Beispiel wegen fehlender Registrierung (Enrollment) oder weil der Nutzer die Privacy-Sandbox-Einstellungen deaktiviert hat.

Beispiele

Gemeinsamen Speicher beim Widerruf der Einwilligung leeren

const widerrufeEinwilligung = async () => {
  if (!('sharedStorage' in window)) {
    console.log('Shared Storage wird nicht unterstützt.');
    return;
  }
  try {
    await window.sharedStorage.clear();
    console.log('Alle Shared-Storage-Daten wurden gelöscht.');
  } catch (err) {
    console.error('Löschen fehlgeschlagen:', err.message);
  }
};

document.querySelector('#consent-revoke')
  .addEventListener('click', widerrufeEinwilligung);
Alle Shared-Storage-Daten wurden gelöscht.

Zurücksetzen innerhalb einer Worklet-Operation

// reset-worklet.js – wird per sharedStorage.worklet.addModule() geladen
class ResetOperation {
  async run(data) {
    const version = await sharedStorage.get('schema-version');
    if (version !== data.expectedVersion) {
      // Veraltetes Datenschema: kompletten Speicher verwerfen
      await sharedStorage.clear();
      await sharedStorage.set('schema-version', data.expectedVersion);
    }
  }
}
register('reset-if-outdated', ResetOperation);

// main.js – im Hauptkontext
await window.sharedStorage.worklet.addModule('/reset-worklet.js');
await window.sharedStorage.run('reset-if-outdated', {
  data: { expectedVersion: '2' },
});

Neue A/B-Test-Kampagne mit sauberem Speicher starten

const starteKampagne = async (kampagnenId) => {
  await window.sharedStorage.clear();
  // Nutzer zufällig einer Gruppe zuweisen, ignoreIfPresent verhindert Überschreiben
  const gruppe = Math.random() < 0.5 ? 'A' : 'B';
  await window.sharedStorage.set('kampagne', kampagnenId);
  await window.sharedStorage.set('gruppe', gruppe, { ignoreIfPresent: true });
  console.log(`Kampagne ${kampagnenId} gestartet`);
};

starteKampagne('herbst-2024');
Kampagne herbst-2024 gestartet

// Wichtig · Fallstricke

  • Kompatibilität: Die Methode ist experimentell und nur in Chromium-Browsern verfügbar. Firefox und Safari unterstützen Shared Storage nicht. Google hat angekündigt, mehrere Privacy-Sandbox-APIs einzustellen. Prüfe deshalb immer mit 'sharedStorage' in window und plane einen Fallback ein.
  • Registrierung erforderlich: Ohne Privacy-Sandbox-Enrollment und Attestierung des aufrufenden Ursprungs wird das Promise abgelehnt. Lokal testen lässt sich die API über Chrome-Flags.
  • Kein Lesezugriff außerhalb des Worklets: Im Hauptkontext kannst du nach clear() nicht direkt prüfen, ob der Speicher leer ist. get() gibt es nur im Worklet.
  • Ursprung beachten: clear() löscht nur die Daten des Ursprungs, der das Skript ausführt. In eingebetteten Iframes von Drittanbietern ist das deren Ursprung.
  • Alternative per HTTP-Header: Der Speicher lässt sich auch serverseitig leeren. Dazu setzt du beim Request fetch(url, { sharedStorageWritable: true }), und der Server antwortet mit dem Header Shared-Storage-Write: clear.
  • Die Operation lässt sich nicht rückgängig machen. Wenn du nur einzelne Schlüssel entfernen willst, nimm delete().