SharedStorageSelectURLOperation

实验性: 这是一个 实验性技术
在生产环境中使用此技术之前,请仔细查看 浏览器兼容性表格

SharedStorageSelectURLOperation 接口是 共享存储 API 的一个 URL 选择输出门 操作。

实例方法

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 的浏览器中加载。

另请参阅