Navigator:deprecatedReplaceInURN() 方法

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

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

FencedFrameConfig 或不透明 URN 来自于某些来源,例如 受保护受众 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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅