Navigator:deprecatedReplaceInURN() 方法
deprecatedReplaceInURN()
是 Navigator
接口的一个方法,用于替换给定不透明 URN 或 FencedFrameConfig
的内部 url
属性所对应的映射 URL 中的指定字符串。
FencedFrameConfig
或不透明 URN 来自于某些来源,例如 受保护受众 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 子部分必须采用以下格式之一
返回值
异常
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 表格仅在浏览器中加载