Navigator:deprecatedReplaceInURN() 方法
Navigator 接口的 deprecatedReplaceInURN() 方法用于替换与给定不透明 URN 或 FencedFrameConfig 的内部 url 属性对应的映射 URL 中的指定字符串。
FencedFrameConfig 或不透明 URN 来自例如 Protected Audience API 的 runAdAuction() 方法,然后将其设置为 HTMLFencedFrameElement.config 的值。与 FencedFrameConfig 或不透明 URN 关联的内容 URL 由浏览器在内部映射到它,无法通过 JavaScript 访问。
但是,您可能希望替换此内部 URL 的部分内容。这是将运行时数据传递到广告素材以用于渲染的常用方法。deprecatedReplaceInURN() 作为一种临时措施提供,用于实现围栏帧 URL 的替换,以帮助广告技术提供商将现有实现迁移到 隐私沙盒 API。
语法
js
deprecatedReplaceInURN(UrnOrConfig, replacements)
参数
UrnOrConfig-
一个
FencedFrameConfig对象或一个不透明 URN,您希望替换与之对应的内部 URL 的部分内容。 replacements-
一个包含一个或多个属性的对象,这些属性表示您希望在内部 URL 中进行的替换。每个属性键是要替换的 URL 的一部分,每个属性值是要替换它的字符串。请注意,
- 要替换的 URL 的一部分必须是以下格式之一
${string}%%string%%
- 如果 URL 的一部分格式正确,但该部分在 URL 中未找到,则返回的 Promise 仍然会 fulfilled,但不会进行任何替换。
- 要替换的 URL 的一部分必须是以下格式之一
返回值
异常
TypeErrorDOMException-
在以下情况下抛出
UrnOrConfig不是有效的FencedFrameConfig对象或不透明 URN。- 指定的任何替换键都不符合允许的格式。
示例
以下调用可用于返回不透明 URN
js
const exampleURN = await navigator.runAdAuction({
...auctionConfig,
resolveToConfig: false,
});
然后,您可以使用如下的 deprecatedReplaceInURN() 调用来替换 URL 的一部分
js
await navigator.deprecatedReplaceInURN(exampleURN, {
"${foo}": "1",
"${bar}": "2",
"%%baz%%": "3",
});
如果与 URN 关联的内部 URL 最初是
http
https://example.com/a=${foo}&b=${bar}&c=%%baz%%
替换后它将变为
http
https://example.com/a=1&b=2&c=3
规范
| 规范 |
|---|
| 围栏框架 # dom-navigator-deprecatedreplaceinurn |
浏览器兼容性
加载中…