WorkletSharedStorage

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die WorkletSharedStorage-Schnittstelle der Shared Storage API repräsentiert den gemeinsamen Speicher für einen bestimmten Ursprung innerhalb eines Worklet-Kontexts.

WorkletSharedStorage wird über SharedStorageWorkletGlobalScope.sharedStorage aufgerufen.

Instanz-Eigenschaften

context Experimentell Nicht standardisiert

Enthält kontextuelle Daten, die über die Methode FencedFrameConfig.setSharedStorageContext() in den gemeinsamen Speicher-Worklet aus dem zugehörigen Browserkontext übergeben wurden.

Instanz-Methoden

WorkletSharedStorage erbt Eigenschaften von seiner Elternschnittstelle, SharedStorage.

get() Experimentell

Ruft einen Wert aus dem gemeinsamen Speicher ab.

length() Experimentell

Gibt die Anzahl der Einträge zurück, die derzeit im gemeinsamen Speicher für den aktuellen Ursprung gespeichert sind.

remainingBudget() Experimentell

Gibt das verbleibende Navigationsbudget für den aktuellen Ursprung zurück.

WorkletSharedStorage beinhaltet auch die folgenden Methoden, da ein asynchroner Iterator darauf definiert ist:

entries() Experimentell

Gibt einen neuen asynchronen Iterator für die Schlüssel-Wert-Paare der aufzählbaren Eigenschaften einer WorkletSharedStorage-Objektinstanz zurück.

keys() Experimentell

Gibt einen neuen asynchronen Iterator zurück, der die Schlüssel für jedes Element einer WorkletSharedStorage-Objektinstanz enthält.

WorkletSharedStorage[Symbol.asyncIterator]() Experimentell

Gibt standardmäßig die entries()-Funktion zurück.

Beispiele

Kontextuelle Daten mittels setSharedStorageContext() übergeben

Sie können die Private Aggregation API verwenden, um Berichte zu erstellen, die Ereignisleveldaten innerhalb eingezäunter Frames mit kontextuellen Daten aus dem eingebetteten Dokument kombinieren. setSharedStorageContext() kann verwendet werden, um kontextuelle Daten vom Einbettungsdokument an gemeinsam genutzte Speicher-Worklets zu übergeben, die von der Protected Audience API initiiert wurden.

In diesem Beispiel speichern wir Daten sowohl von der einbettenden Seite als auch vom fenced frame mithilfe von shared storage.

Auf der einbettenden Seite setzen wir eine mock Event-ID als gemeinsam genutzten Speicherungskontext mit setSharedStorageContext():

js
const frameConfig = await navigator.runAdAuction({ resolveToConfig: true });

// Data from the embedder that you want to pass to the shared storage worklet
frameConfig.setSharedStorageContext("some-event-id");

const frame = document.createElement("fencedframe");
frame.config = frameConfig;

Innerhalb des fenced frames, nachdem das Worklet-Modul mit window.sharedStorage.worklet.addModule() hinzugefügt wurde, senden wir die Ereignisleveldaten in das Modul des gemeinsam genutzten Speichers mit window.sharedStorage.run() (dies hat keinen Bezug zu den kontextuellen Daten aus dem Einbettungsdokument):

js
const frameData = {
  // Data available only inside the fenced frame
};

await window.sharedStorage.worklet.addModule("reporting-worklet.js");

await window.sharedStorage.run("send-report", {
  data: {
    frameData,
  },
});

Im reporting-worklet.js Worklet lesen wir die Ereignis-ID des einbetteten Dokuments von sharedStorage.context und die Ereignisleveldaten des Frames aus dem Datenobjekt. Wir berichten sie dann durch Private Aggregation:

js
class ReportingOperation {
  convertEventIdToBucket(eventId) { ... }
  convertEventPayloadToValue(info) { ... }

  async run(data) {
    // Data from the embedder
    const eventId = sharedStorage.context;

    // Data from the fenced frame
    const eventPayload = data.frameData;

    privateAggregation.sendHistogramReport({
      bucket: convertEventIdToBucket(eventId),
      value: convertEventPayloadToValue(eventPayload)
    });
  }
}

register('send-report', ReportingOperation);

Spezifikationen

No specification found

No specification data found for api.WorkletSharedStorage.
Check for problems with this page or contribute a missing spec_url to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch