Navigator:deprecatedReplaceInURN() 方法
Deprecated
To be removed
This feature is pending removal from browsers. Using it now may lead to broken functionality in future updates.
Following the announcement that Chrome will maintain its current approach to third-party cookies, Chrome decided to withdraw certain Privacy Sandbox features including the <fencedframe> element and related APIs.
>
Navigator 接口的 deprecatedReplaceInURN() 方法用于替换给定不透明 URN 或 FencedFrameConfig 的内部 url 属性所对应的映射 URL 中的指定字符串。
FencedFrameConfig 或不透明 URN 是从诸如受保护的受众 API 的 runAdAuction() 方法等来源返回的,然后设置为 HTMLFencedFrameElement.config 的值。浏览器内部会将与 FencedFrameConfig 或不透明 URN 相关联的内容 URL 映射到它,并且无法通过 JavaScript 访问该 URL。
然而,你可能希望替换该内部 URL 的部分内容。这是一种常见的将运行时数据传递到广告创意中以用于渲染的方法。deprecatedReplaceInURN() 作为一项临时措施被提供,以便能够对围栏框架 URL 进行这种替换,从而帮助广告技术提供商将现有实现迁移到隐私沙盒 API。
语法
deprecatedReplaceInURN(UrnOrConfig, replacements)
参数
UrnOrConfig-
一个
FencedFrameConfig对象或一个想要替换其对应内部 URL 部分的不透明 URN。 replacements-
一个包含一个或多个属性的对象,这些属性表示希望在内部 URL 中进行的替换。每个属性键是希望替换的 URL 子部分,每个属性值是要替换成的字符串。请注意:
- 要替换的 URL 子部分必须采用以下格式之一:
${string}%%string%%
- 如果一个 URL 子部分的格式正确,但在 URL 中未找到该子部分,则返回的 Promise 仍然会兑现,但不会进行任何替换。
- 要替换的 URL 子部分必须采用以下格式之一:
返回值
异常
TypeErrorDOMException-
抛出条件:
UrnOrConfig不是一个有效的FencedFrameConfig对象或不透明 URN。- 任何指定的替换键不符合允许的格式。
示例
以下调用用于返回一个不透明 URN:
const exampleURN = await navigator.runAdAuction({
...auctionConfig,
resolveToConfig: false,
});
然后,可以使用类似以下的 deprecatedReplaceInURN() 调用来替换 URL 的子部分:
await navigator.deprecatedReplaceInURN(exampleURN, {
"${foo}": "1",
"${bar}": "2",
"%%baz%%": "3",
});
如果与 URN 关联的内部 URL 最初是:
https://example.com/a=${foo}&b=${bar}&c=%%baz%%
替换后,它将变为:
https://example.com/a=1&b=2&c=3
规范
| 规范 |
|---|
| Fenced Frame> # dom-navigator-deprecatedreplaceinurn> |