Signatur
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
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();
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);
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();
// 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
Promisemit einemTypeErrorabgelehnt. Behandeln Sie diesen Fall immer mittry/catch. - Die Richtlinie
Permissions-Policy: shared-storagekann die API in Iframes sperren. - Löschen geht auch über HTTP-Antwort-Header, und zwar mit
Shared-Storage-Write: delete;key="name". Das funktioniert beifetch()-Aufrufen mitsharedStorageWritable: trueund bei Iframes und Bildern mit dem Attributsharedstoragewritable. - Ob der Eintrag vorher existiert hat, erfahren Sie nicht: Das
Promisewird 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.