Per migliorare la privacy e la sicurezza, le chiamate all'API Web Share in iframe di terze parti ora devono essere esplicitamente consentite.
Questo articolo riguarda una modifica potenzialmente che provoca un errore nell'API Web Share. Questa modifica è già presente in Firefox, sarà disponibile in Chrome a partire dalla versione 110 e dovrebbe essere disponibile a breve anche in Safari.
L'API Web Share consente di condividere testo, URL o file. Nella sua forma più semplice, il codice di condivisione ha un aspetto simile al seguente:
try {
await navigator.share({
title: 'Title',
text: 'Text',
url: location.href,
});
} catch (err) {
console.error(`${err.name}: ${err.message}`);
}
Se un'azione di condivisione deve avvenire in un iframe di terze parti, una recente modifica alle specifiche richiede di consentire esplicitamente l'operazione. Per farlo, aggiungi un attributo allow
al tag <iframe>
con un valore di web-share
. Indica al browser che il sito di incorporamento consente all'iframe di terze parti incorporato di attivare l'azione di condivisione.
<!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>
Puoi vedere questa funzionalità in azione in una demo su Glitch e visualizzare il codice sorgente.
Se non specifichi l'attributo, verrà generato un NotAllowedError
con il messaggio Failed to execute 'share' on 'Navigator': Permission denied
. Questa limitazione è stata concordata da tutti i fornitori di browser per migliorare la privacy e la sicurezza degli utenti e per evitare che utenti malintenzionati, ad esempio gli annunci illeciti, attivino azioni di condivisione impreviste.