Navigator:deprecatedReplaceInURN() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

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

FencedFrameConfig 或不透明 URN 是从诸如受保护的受众 APIrunAdAuction() 方法等来源返回的,然后设置为 HTMLFencedFrameElement.config 的值。浏览器内部会将与 FencedFrameConfig 或不透明 URN 相关联的内容 URL 映射到它,并且无法通过 JavaScript 访问该 URL。

然而,你可能希望替换该内部 URL 的部分内容。这是一种常见的将运行时数据传递到广告创意中以用于渲染的方法。deprecatedReplaceInURN() 作为一项临时措施被提供,以便能够对围栏框架 URL 进行这种替换,从而帮助广告技术提供商将现有实现迁移到隐私沙盒 API。

语法

js
deprecatedReplaceInURN(UrnOrConfig, replacements)

参数

UrnOrConfig

一个 FencedFrameConfig 对象或一个想要替换其对应内部 URL 部分的不透明 URN。

replacements

一个包含一个或多个属性的对象,这些属性表示希望在内部 URL 中进行的替换。每个属性键是希望替换的 URL 子部分,每个属性值是要替换成的字符串。请注意:

  • 要替换的 URL 子部分必须采用以下格式之一:
    • ${string}
    • %%string%%
  • 如果一个 URL 子部分的格式正确,但在 URL 中未找到该子部分,则返回的 Promise 仍然会兑现,但不会进行任何替换。

返回值

兑现为 undefinedPromise

异常

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

规范

Specification
Fenced Frame
# dom-navigator-deprecatedreplaceinurn

浏览器兼容性

BCD tables only load in the browser

参见