Nuevos requisitos de la API de Web Share en iframes de terceros

Para mejorar la privacidad y seguridad, ahora se deben permitir explícitamente las llamadas a la API de Web Share en iframes de terceros.

En este artículo, se describe un cambio potencialmente rotundo en la API de Web Share. Este cambio ya está en Firefox, llegará a Chrome a partir de la versión 110 y se espera que lo haga pronto en Safari.

La API de Web Share te permite compartir texto, URL o archivos. En su forma más simple, el código para compartir tiene un aspecto similar al siguiente:

try {
  await navigator.share({
    title: 'Title',
    text: 'Text',
    url: location.href,
  });
} catch (err) {
  console.error(`${err.name}: ${err.message}`);
}

Si es necesario que se realice una acción de uso compartido en un iframe de terceros, un cambio reciente de especificaciones requerirá que permitas explícitamente la operación. Para ello, agrega un atributo allow a la etiqueta <iframe> con un valor de web-share. Esto le indica al navegador que el sitio de incorporación permite que el iframe de terceros incorporado active la acción de compartir.

<!DOCTYPE html>
<html lang="en">
  <body>
    <h1>Web Share in third-party iframes</h1>
    <!-- The embedding page is hosted on https://example.com/index.html. -->
    <iframe allow="web-share" src="https://third-party.example.com/iframe.html"></iframe>
  </body>
</html>

Puedes ver esto en acción en una demostración en Glitch y ver el código fuente. Si no proporcionas el atributo, se mostrará una NotAllowedError con el mensaje Failed to execute 'share' on 'Navigator': Permission denied. Todos los proveedores de navegadores acordaron esta limitación para mejorar la privacidad y seguridad de los usuarios y evitar que las personas que actúan de mala fe, como los anuncios abusivos, activen acciones de uso compartido inesperadas.