SharedStorageSelectURLOperation
实例方法
run()
实验性-
定义了 URL 选择输出门操作中定义的
run()
方法应符合的结构。
示例
在此示例中,一个名为 SelectURLOperation
的类在工作线程中定义,并使用 SharedStorageWorkletGlobalScope.register()
以 ab-testing
为名称进行注册。SharedStorageSelectURLOperation
定义了此类需要符合的结构,本质上定义了 run()
方法所需的参数。除了此要求之外,类的功能可以灵活地定义。
js
// ab-testing-worklet.js
class SelectURLOperation {
async run(urls, data) {
// Read the user's experiment group from Shared Storage
const experimentGroup = await this.sharedStorage.get("ab-testing-group");
// Return the group number
return experimentGroup;
}
}
// Register the operation
register("ab-testing", SelectURLOperation);
注意:可以在同一个共享存储工作线程模块脚本中以不同的名称定义和注册多个操作;请参阅 SharedStorageOperation
以获取示例。
在主浏览上下文,ab-testing
操作使用 WindowSharedStorage.selectURL()
方法调用。
js
// Randomly assigns a user to a group 0 or 1
function getExperimentGroup() {
return Math.round(Math.random());
}
async function injectContent() {
// Register 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 # sharedstorageselecturloperation |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。