navigator.share / canShare în JavaScript

Stocare și dispozitiv Mobile și browserele moderne (doar HTTPS)

Deschide meniul de partajare al sistemului (WhatsApp, email, mesaje) pentru un link, un text sau fișiere.

Sintaxă
await navigator.share({ title, text, url, files })
navigator.canShare(date)

Ce face navigator.share / canShare

navigator.share(date) afișează fereastra de partajare a telefonului sau a sistemului de operare, cu aplicațiile instalate. Merge doar ca urmare a unui clic, iar promisiunea este respinsă cu AbortError dacă utilizatorul închide fereastra.

navigator.canShare(date) verifică dinainte dacă datele (de exemplu fișiere) pot fi partajate. Pe calculatoarele fără suport, navigator.share lipsește: afișează atunci butoane clasice sau copiază linkul.

Parametri

Parametru Descriere
date Un obiect cu title, text, url și/sau files.

Ce returnează

share: o Promise. canShare: true sau false.

Exemple

Exemplul 1: Butonul „Distribuie” pentru un articol

document.querySelector("#distribuie").addEventListener("click", async () => {
  const date = { title: document.title, url: location.href };
  if (navigator.canShare?.(date)) {
    try {
      await navigator.share(date);
      console.log("distribuit");
    } catch (e) {
      console.log(e.name === "AbortError" ? "anulat" : e.message);
    }
  } else {
    await navigator.clipboard.writeText(date.url);
    console.log("link copiat");
  }
});

Rezultat în browser

distribuit

Greșeli frecvente

  • Afișezi butonul de partajare peste tot fără verificare. Pe multe calculatoare navigator.share nu există și primești TypeError.

Comenzi înrudite

  • navigator.clipboard.writeText / readText: Copiază un text în clipboard sau îl citește de acolo (cu permisiunea utilizatorului).
  • new URL(): Desface o adresă URL în părți (domeniu, cale, parametri) și o construiește corect la loc.
  • Blob / File: Un bloc de date imuabil, cu tip MIME (Blob), sau un fișier cu nume și dată (File).