Web Share è un'API sviluppata in seno al Chrome Team con lo scopo di fornire un'interfaccia semplice da utilizzare per l'invocazione delle funzionalità di condivisione offerte dalle host platform; potrebbe sembrare strano che uno strumento del genere non fosse già disponibile e, in effetti, gli sviluppatori possono già utilizzare alcune soluzioni simili, ma nessuna di esse offre un supporto completo.
Web Share si presenta quindi come uno strumento più completo rispetto a registerProtocolHandler, incompatibile con i sistemi mobili, Web Intents, framework sperimentale per Web application ormai dismesso, e service URL che o sono fortemente dipendenti da un servizio esterno (Twitter) o vengono supportati unicamente da piattaforme specifiche (Android) e richiedono procedure di opt-in via App.
Una delle caratteristiche più interessanti di questa nuova API risiede nel fatto che essa è stata concepita per garantire un controllo completo sul modo in cui vengono condivisi i dati. Il supporto iniziale a Web Share è stato introdotto alcuni mesi fa in occasione del rilascio della beta di Chrome 55 quindi; in attesa della fase di general availability, l'interfaccia non sarà accessibile da tutti i siti Web e per il suo utilizzo verrà richiesta una registrazione al trial organizzato per la raccolta dei feedback.
L'adozione dell'API prevede inoltre alcuni requisiti di base, come per esempio quello di ospitare il proprio sito Web in un contesto protetto, quindi su connessione sicura tramite HTTPS; Web Share potrà essere inoltre invocato soltanto come risultato di una user gesture e i valori passati all'interfaccia dovranno essere obbligatoriamente delle stringhe:
navigator.share({
title: document.title,
text: "Blah! Blah! Blah!",
url: window.location.href
}).then(() => console.log('Condivisione completata'))
.catch(() => console.log('Errore:', error));
Basata sulle promise, Web Share è un'API single method che manipola un oggetto associato alle proprietà title, text e url, in sostanza tutte le informazioni utili per la condivisione di un contenuto; navigator.share() agirà direttamente in risposta della gesture operata dall'utilizzatore.