Para mejorar la privacidad y la seguridad, ahora se deben permitir de forma explícita las llamadas a la API de Web Share en iframes de terceros.
En este artículo, se describe un posible cambio rotundo en la API de Web Share. Este cambio ya está disponible en Firefox, se incluirá en Chrome a partir de la versión 110 y se espera que llegue a Safari próximamente.
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 es necesario realizar una acción de uso compartido en un iframe de terceros, un
cambio reciente en las especificaciones requerirá que permitas la operación
de forma explícita. 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 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 personas o entidades que actúan de mala fe, por ejemplo, anuncios abusivos, activen acciones de uso compartido inesperadas.