WorkletSharedStorage
WorkletSharedStorage
是 Shared Storage API 的一个接口,它表示 worklet 上下文中特定来源的共享存储。
可以通过 SharedStorageWorkletGlobalScope.sharedStorage
访问 WorkletSharedStorage
。
实例属性
context
实验性 非标准-
包含通过
FencedFrameConfig.setSharedStorageContext()
方法从关联的浏览上下文传递到共享存储 worklet 的上下文数据。
实例方法
WorkletSharedStorage
继承自其父接口 SharedStorage
的属性。
get()
实验性-
从共享存储中检索值。
length()
实验性-
返回当前存储在当前来源的共享存储中的条目数。
remainingBudget()
实验性-
返回当前来源的剩余导航预算。
由于在其上定义了 异步迭代器,因此 WorkletSharedStorage
还包括以下方法
示例
通过 setSharedStorageContext()
传递上下文数据
您可以使用 私有聚合 API 创建报告,这些报告将围栏框架内的事件级数据与嵌入文档中的上下文数据相结合。setSharedStorageContext()
可用于将上下文数据从嵌入器传递到由 受保护受众 API 启动的共享存储 worklet。
在此示例中,我们使用 共享存储 存储来自嵌入页面和围栏框架的数据。
在嵌入页面上,我们使用 setSharedStorageContext()
将模拟事件 ID 作为共享存储上下文设置。
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()
添加 worklet 模块后,我们使用 window.sharedStorage.run()
将事件级数据发送到共享存储 worklet 模块(这与来自嵌入文档的上下文数据无关)。
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
worklet 中,我们从 sharedStorage.context
读取嵌入文档的事件 ID,从数据对象读取框架的事件级数据。然后,我们通过私有聚合报告它们。
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);
规范
规范 |
---|
Shared Storage API # workletsharedstorage |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。