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 是从诸如受保护的受众 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 子部分必须采用以下格式之一:
返回值
异常
TypeError
DOMException
-
抛出条件:
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
规范
Specification |
---|
Fenced Frame # dom-navigator-deprecatedreplaceinurn |
浏览器兼容性
BCD tables only load in the browser