Renderiza un anuncio

Cuando una subasta de Protected Audience muestra un candidato de anuncio, se puede mostrar como un URN opaco, que se usa para renderizar un anuncio en un iframe, o un FencedFrameConfig, que se usa para renderizar el anuncio en un marco vallado.

En esta guía, se explicará qué es un marco vallado y por qué es necesario, además de cómo renderizar un anuncio con cualquiera de los métodos. Para obtener información más detallada sobre los fotogramas vallados, obtén más información en esta guía o en la propuesta.

¿Qué son los marcos vallados?

Un marco vallado (<fencedframe>) es un elemento HTML para contenido incorporado, similar a iframe. A diferencia de los objetos iframe, un marco vallado restringe la comunicación con su contexto de incorporación para permitir que el marco acceda a datos entre sitios sin compartirlos con el contexto de incorporación. Del mismo modo, los datos de origen en el contexto de incorporación no se pueden compartir con el marco vallado.

Por ejemplo, supongamos que news.example (el contexto de incorporación) incorpora un anuncio de shoes.example en un marco vallado. news.example no puede robar datos del anuncio shoes.example, y shoes.example no puede aprender datos de origen de news.example.

¿Cómo funcionan los marcos vallados?

Los marcos vallados usan el objeto FencedFrameConfig para la navegación. Este objeto se puede mostrar desde una subasta de Protected Audience. Luego, se configura el objeto de configuración como el atributo config en el elemento de marco vallado. Esto difiere de un iframe en el que se asigna una URL o un URN opaco al atributo src. El objeto FencedFrameConfig tiene una propiedad url de solo lectura. Sin embargo, como los casos prácticos actuales requieren que se oculte la URL real del recurso interno, esta propiedad muestra la string opaca cuando se lee.

Un marco vallado no puede usar postMessage para comunicarse con su incorporado. Sin embargo, un marco vallado puede usar postMessage con iframe dentro del marco vallado.

Los marcos vallados se aislarán del publicador de otras maneras. El editor no tendrá acceso al DOM dentro de un marco vallado, y este no podrá acceder al DOM del publicador. Además, los atributos como name, que se pueden establecer en cualquier valor y que el publicador puede observar, no están disponibles en marcos vallados.

Los marcos vallados se comportan como un contexto de navegación de nivel superior (como una pestaña del navegador). Aunque un marco vallado en ciertos casos de uso (como opaque-ads) puede contener datos entre sitios (como un grupo de interés de la API de Protected Audience), el marco no puede acceder al almacenamiento no particionado ni a las cookies. Un marco vallado opaque-ads puede acceder a una partición de almacenamiento y cookies única basada en nonce.

Las características de los marcos vallados se detallan con más detalle en la explicación.

Renderiza un anuncio en un marco vallado

Se muestra una FencedFrameConfig desde una subasta de Protected Audience, siempre que el parámetro resolveToConfig de AuctionConfig se haya configurado como verdadero:

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

Una vez que hayas obtenido la configuración, puedes asignarla a un atributo config de un marco vallado para navegar por el marco al recurso representado por la configuración. Las versiones anteriores de Chrome no admiten la propiedad resolveToConfig, por lo que debes confirmar que la promesa se resolvió en un FencedFrameConfig antes de navegar:

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

Renderiza un anuncio en un iframe

Si AuctionConfig no establece resolveToConfig de forma explícita o si se configura como falso, runAdAuction() muestra un URN opaco. Este URN se puede configurar como un src de iframe para renderizar el anuncio.