WindowSharedStorage:selectURL() 方法
selectURL()
是 WindowSharedStorage
接口的一个方法,它执行一个在添加到当前源的 SharedStorageWorklet
中的模块中注册的 URL 选择操作。
注意: URL 选择输出网关 用于根据共享存储数据从提供的列表中选择一个 URL 显示给用户。
语法
selectURL(name, urls)
selectURL(name, urls, options)
参数
name
-
一个字符串,表示在共享存储工作线程模块中注册的操作的名称。它必须与使用
SharedStorageWorkletGlobalScope.register()
注册操作时提供的名称匹配。 urls
-
一个对象数组,表示由 URL 选择操作在其中进行选择的 URL。每个对象包含两个属性
url
-
一个表示 URL 的字符串。
reportingMetadata
可选-
一个对象,其中名称是事件类型,值是指向报告目标的 URL,例如
"click" : "my-reports/report1.html"
。这些 URL 充当类型为"shared-storage-select-url"
的报告提交的目标,通常通过Fence.reportEvent()
或Fence.setReportEventDataForAutomaticBeacons()
方法调用提交。
options
可选-
一个选项对象,它可以包含以下属性
data
可选-
一个对象,表示执行操作所需的任何数据。
keepAlive
可选-
一个布尔值。如果设置为
true
,则关联工作线程的SharedStorageWorkletGlobalScope
将保持活动状态,并且可以再次运行该操作。因此,对于不打算作为最后一个操作的每个操作,您都需要将keepAlive
设置为true
。默认值false
表示在操作运行后SharedStorageWorkletGlobalScope
将终止,并且无法再次运行。 resolveToConfig
可选-
一个布尔值。如果设置为
true
,则run()
返回的Promise
的履行值将是一个FencedFrameConfig
对象,可用于通过其config
属性将内容加载到<fencedframe>
中。默认值false
表示履行值将是一个字符串,可用于将内容加载到<iframe>
中。
返回值
一个 Promise
,根据 resolveToConfig
选项的值,它将以 FencedFrameConfig
对象或表示 URL 的字符串的形式履行。
异常
TypeError
-
如果以下情况发生,则抛出
- 尚未使用
addModule()
添加工作线程模块。 urls
为空或超过最大允许长度(特定于浏览器)。- 对象的
url
属性包含无效的 URL。 - 共享存储已禁用(例如,通过浏览器设置)。
- 调用站点在成功的 隐私沙盒注册流程 中未包含共享存储 API。
- 尚未使用
示例
基本 A/B 测试
// Randomly assigns a user to a group 0 or 1
function getExperimentGroup() {
return Math.round(Math.random());
}
async function injectContent() {
// Add the module to the shared storage worklet
await window.sharedStorage.worklet.addModule("ab-testing-worklet.js");
// Assign user to a random group (0 or 1) and store it in shared storage
window.sharedStorage.set("ab-testing-group", getExperimentGroup(), {
ignoreIfPresent: true,
});
// Run the URL selection operation
const fencedFrameConfig = await window.sharedStorage.selectURL(
"ab-testing",
[
{ url: `https://your-server.example/content/default-content.html` },
{ url: `https://your-server.example/content/experiment-content-a.html` },
],
{
resolveToConfig: true,
},
);
// Render the chosen URL into a fenced frame
document.getElementById("content-slot").config = fencedFrameConfig;
}
injectContent();
请参阅 共享存储 API 着陆页以获取此示例的演练以及其他示例的链接。
规范
规范 |
---|
共享存储 API # dom-windowsharedstorage-selecturl |
浏览器兼容性
BCD 表仅在启用了 JavaScript 的浏览器中加载。