FencedFrameConfig:setSharedStorageContext() 方法
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
FencedFrameConfig
接口的 setSharedStorageContext()
方法用于将嵌入文档中的上下文数据传递到 <fencedframe>
共享存储中。
语法
setSharedStorageContext(context)
参数
context
-
一个表示要传递到共享存储中的上下文数据的字符串。一旦设置,它将被存储在
FencedFrameConfig
实例的内部配置中。
返回值
无(undefined
)。
示例
通过 setSharedStorageContext()
传递上下文数据
你可以使用隐私聚合 API 来创建报告,该报告将围栏框架内的事件级数据与嵌入文档的上下文数据相结合。setSharedStorageContext()
可用于将从嵌入方传递的上下文数据传递给由受保护的受众 API 启动的共享存储 worklet。
在下面的示例中,我们将嵌入页面和围栏框架中的数据都存储在共享存储中。
在嵌入页面中,我们将使用 setSharedStorageContext()
设置一个模拟事件 ID 作为共享存储上下文:
const frameConfig = await navigator.runAdAuction({ resolveToConfig: true });
// 你想要从嵌入方传递给共享存储 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 = {
// 数据仅在围栏框架内可用
};
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)进行报告:
class ReportingOperation {
convertEventIdToBucket(eventId) { ... }
convertEventPayloadToValue(info) { ... }
async run(data) {
// 来自于嵌入方的数据
const eventId = sharedStorage.context;
// 来自于围栏框架的数据
const eventPayload = data.frameData;
privateAggregation.sendHistogramReport({
bucket: convertEventIdToBucket(eventId),
value: convertEventPayloadToValue(eventPayload)
});
}
}
register('send-report', ReportingOperation);
规范
Specification |
---|
Fenced Frame # dom-fencedframeconfig-setsharedstoragecontext |
浏览器兼容性
BCD tables only load in the browser