Para mejorar la privacidad y la seguridad, ahora se deben permitir de forma explícita las llamadas a la API de Web Share en los elementos iframe de terceros.
En este artículo, se aborda un posible cambio rotundo en la API de Web Share. Este cambio ya se implementó en Firefox, se lanzará en Chrome a partir de la versión 110 y se espera que se lance en Safari pronto.
La API de Web Share te permite compartir texto, URLs o archivos. En su forma más simple, el código de uso compartido se ve de la siguiente manera:
try {
await navigator.share({
title: 'Title',
text: 'Text',
url: location.href,
});
} catch (err) {
console.error(`${err.name}: ${err.message}`);
}
Si se debe realizar una acción de uso compartido en un iframe de terceros, un cambio reciente en la especificación requiere 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 GitHub y consultar el código fuente.
Si no se proporciona el atributo, se generará un 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 la seguridad de los usuarios, y evitar que las personas y entidades que actúan de mala fe, por ejemplo, los anuncios abusivos, activen acciones de uso compartido inesperadas.