呈现广告

当 Protected Audience 竞价返回候选广告后, 以不透明 URN 的形式返回,用于在 iframe 中呈现广告; FencedFrameConfig,用于在围栏框架中呈现广告。

本指南将介绍什么是围栏框架、为什么需要围栏框架,以及 如何使用这两种方法呈现广告。如需深入了解 框架,详情请参阅本指南提案

什么是围栏框架?

围栏框架 (<fencedframe>) 是嵌入内容的 HTML 元素, 类似于 iframe。与 iframe 不同,围栏帧会限制通信, 及其嵌入上下文,以允许框架访问跨网站数据, 将其与嵌入上下文共享。同样, 嵌入上下文不能与围栏框架共享。

例如,假设 news.example(嵌入上下文)从 围栏框架中的 shoes.examplenews.example 无法从以下位置泄露数据: shoes.example广告,shoes.example无法从 news.example

围栏框架的工作原理是什么?

围栏框架使用 FencedFrameConfig 对象进行导航。此对象可以 从 Protected Audience 竞价中返回。然后,将配置对象设置为 围栏框架元素上的 config 属性。这与 iframe 不同。 其中,将网址或不透明 URN 分配给 src 属性。通过 FencedFrameConfig 对象具有只读 url 属性;然而,由于 当前用例要求隐藏内部资源的实际网址, 此属性在读取时返回字符串不透明。

围栏框架无法使用 postMessage 与其嵌入器进行通信。 不过,围栏框架可以使用 postMessage,其中 iframe 位于 围栏框架

围栏框架会通过其他方式与发布商隔离开来。发布商 将无法访问围栏框架内的 DOM,而围栏框架内 无法访问发布商的 DOM。此外,name 等属性 设置为任何值并由发布商观察,不适用于 帧。

围栏框架的行为类似于顶级浏览上下文(例如浏览器、 标签页)。虽然在某些用例(例如 opaque-ads)中会遇到一个围栏帧, 可包含跨网站数据(例如 Protected Audience API 兴趣群体)、 框架无法访问未分区存储或 Cookie。用围栏的 opaque-ads 框架可以访问基于 Nonce 的唯一 Cookie 和存储分区。

有关围栏框架的特性,请参阅说明文档

在围栏框架中呈现广告

如果 Protected Audience 竞价返回了 FencedFrameConfigAuctionConfigresolveToConfig 参数已设置为 true:

const frameConfig = await navigator.runAdAuction({
  // ...auction configuration
  resolveToConfig: true
});

获取该配置后,您可以将其分配给围栏框架的 config。 属性将帧导航到该配置表示的资源。 较低版本的 Chrome 不支持 resolveToConfig 属性,因此 仍然必须先确认 promise 已解析为 FencedFrameConfig, 导航:

if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
  const frame = document.createElement('fencedframe');
  frame.config = frameConfig;
}

在 iframe 中呈现广告

如果 AuctionConfig 未明确设置 resolveToConfig 或已设置 设为 false,runAdAuction() 会返回不透明的 URN。此 URN 可设为 iframesrc 来呈现广告。