WorkletSharedStorage

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

WorkletSharedStorage 介面是 Shared Storage API 的一部分,用於表示工作組(worklet)上下文中特定源的共享儲存。

可以透過 SharedStorageWorkletGlobalScope.sharedStorage 訪問 WorkletSharedStorage

例項屬性

context Experimental Non-standard

包含透過 FencedFrameConfig.setSharedStorageContext() 方法從關聯的瀏覽上下文傳遞到共享儲存工作組的上下文資料。

例項方法

WorkletSharedStorage 繼承了其父介面 SharedStorage 的屬性。

get() Experimental

從共享儲存中檢索值。

length() Experimental

返回當前為當前源儲存在共享儲存中的條目數。

remainingBudget() Experimental

返回當前源的剩餘導航預算。

由於 WorkletSharedStorage 定義了 非同步迭代器,因此它還包含以下方法:

entries() Experimental

返回一個 WorkletSharedStorage 物件例項的可列舉屬性的鍵值對的新非同步迭代器。

keys() Experimental

返回一個包含 WorkletSharedStorage 物件例項中每個專案鍵的新非同步迭代器。

WorkletSharedStorage[Symbol.asyncIterator]() Experimental

預設返回 entries() 函式。

示例

透過 setSharedStorageContext() 傳遞上下文資料

您可以使用 Private Aggregation API 來建立報告,這些報告將隱私沙盒(fenced frame)內的事件級資料與嵌入文件的上下文資料相結合。setSharedStorageContext() 可用於將來自嵌入程式的上下文資料傳遞給由 Protected Audience API 啟動的共享儲存工作組。

在此示例中,我們使用 共享儲存 來儲存來自嵌入頁面和隱私沙盒的資料。

在嵌入頁面上,我們使用 setSharedStorageContext() 將模擬事件 ID 設定為共享儲存上下文。

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;

在隱私沙盒中,使用 window.sharedStorage.worklet.addModule() 新增工作組模組後,我們使用 window.sharedStorage.run() 將事件級資料傳送到共享儲存工作組模組(這與來自嵌入文件的上下文資料無關)。

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,
  },
});

reporting-worklet.js 工作組中,我們從 sharedStorage.context 讀取嵌入文件的事件 ID,並從資料物件讀取框架的事件級資料。然後,我們透過 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);

規範

此特性似乎未在任何規範中定義。

瀏覽器相容性

另見