Navigator:deprecatedReplaceInURN() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

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

Navigator 接口的 deprecatedReplaceInURN() 方法用于替换与给定不透明 URN 或 FencedFrameConfig 的内部 url 属性对应的映射 URL 中的指定字符串。

FencedFrameConfig 或不透明 URN 来自例如 Protected Audience APIrunAdAuction() 方法,然后将其设置为 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,但不会进行任何替换。

返回值

一个 Promise,它 fulfilled 为 undefined

异常

TypeError DOMException

在以下情况下抛出

  • 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

浏览器兼容性

另见