SharedStorageSelectURLOperation
Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see thecompatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.
TheSharedStorageSelectURLOperation interface of theShared Storage API represents aURL Selection output gate operation.
In this article
Instance methods
run()DeprecatedDefines the structure to which the
run()method defined inside a URL Selection output gate operation should conform.
Examples
In this example, a class calledSelectURLOperation is defined in a worklet and is registered usingSharedStorageWorkletGlobalScope.register() with the nameab-testing.SharedStorageSelectURLOperation defines the structure to which this class needs to conform, essentially defining the parameters required for therun() method. Other than this requirement, the functionality of the class can be defined flexibly.
// ab-testing-worklet.jsclass 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 operationregister("ab-testing", SelectURLOperation);Note:It is possible to define and register multiple operations in the same shared storage worklet module script with different names; seeSharedStorageOperation for an example.
In the main browsing context, theab-testing operation is invoked using theWindowSharedStorage.selectURL() method:
// Randomly assigns a user to a group 0 or 1function 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();For more details about this example and links to other examples, see theShared Storage API landing page.