FencedFrameConfig:setSharedStorageContext() 方法
FencedFrameConfig 接口的 setSharedStorageContext() 方法将嵌入式文档的上下文数据传递到 <fencedframe> 的 共享存储。
语法
js
setSharedStorageContext(context)
参数
context-
一个代表要传递到共享存储的上下文数据的字符串。设置后,它将被存储在
FencedFrameConfig实例的内部配置中。
返回值
无(Undefined)。
示例
通过 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() 添加 worklet 模块,然后使用 window.sharedStorage.run() 将事件级别的数据发送到共享存储 worklet(这与来自嵌入式文档的上下文数据无关)。
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 worklet 中,我们从 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);
规范
| 规范 |
|---|
| 围栏框架 # dom-fencedframeconfig-setsharedstoragecontext |
浏览器兼容性
加载中…
另见
- privacysandbox.google.com 上的Fenced frames
- 隐私沙盒(位于 privacysandbox.google.com)