Les boutons de partage social signifiaient autrefois charger cinq scripts tiers, chacun avec son propre pot à cookies. L'API Web Share fait tout le travail avec un seul appel à la propre feuille du système d'exploitation, et la situation de confidentialité s'améliore avec elle.
const btn = document.querySelector("#share");
btn.addEventListener("click", async () => {
const payload = {
title: document.title,
text: "Worth a read:",
url: location.href,
};
if (navigator.share) {
try { await navigator.share(payload); } catch { /* dismissed */ }
} else {
await navigator.clipboard.writeText(location.href);
announce("Link copied"); // your own toast or status region
}
});Les contraintes, clairement énoncées
- Contexte sécurisé uniquement : il existe sur https, ce que l'est déjà tout site important.
- Geste de l'utilisateur requis : l'appel doit s'effectuer dans le cadre d'une action réelle de l'utilisateur, exactement comme le propose le bouton.
- Les données que vous transmettez correspondent à ce que l'application cible reçoit, titre, texte, URL ; les fichiers sont également pris en charge lorsque la plate-forme le permet.
- Le licenciement est une AbortError, et tout va bien ; traitez-le comme un silence plutôt que comme un échec.
Le repli qui respecte tout le monde
- Vérification des fonctionnalités avec navigator.share dans le code, et non par chaîne d'agent utilisateur ; les navigateurs changent chaque semaine.
- L'écriture dans le presse-papiers est la solution de secours universelle : l'URL atterrit dans le presse-papiers du lecteur avec un comportement sans surprise de votre toast.
- Conservez au plus un changement d'état visuel : un lien copié et un toast, et pas plus d'octets de script que l'extrait ci-dessus.
- Annoncez à la technologie d'assistance avec votre toast ou votre point de repère de statut ; un travail de copie silencieuse est une demande d'assistance pour un lecteur d'écran.
Un petit bouton, le système d'exploitation fait le reste et cinq scripts sont supprimés au lieu d'être expédiés. Arithmétique très gacor.
