Kopieerknop naar klembord (JavaScript en React)

Kopieerknop naar klembord

Kopieerknop naar klembord in JavaScript en React | We.Inc

Bouw een kopieerknop met navigator.clipboard.writeText: een werkende demo, een React-hook, opgemaakte HTML en afbeeldingen kopiëren met ClipboardItem, toegankelijke Gekopieerd-feedback en foutafhandeling.

Roep navigator.clipboard.writeText(text) aan vanuit een klikhandler. Het geeft een promise terug, dus gebruik await, toon daarna een korte melding Gekopieerd en vang de foutsituatie af. De API werkt alleen op HTTPS of localhost en vereist een echte gebruikersactie zoals een klik, dus roep hem niet aan bij het laden van de pagina.

Manieren om data op het klembord te zetten

Een kopieerknop lijkt triviaal, maar de snippets die hoog scoren slaan vaak de delen over die misgaan: de promise kan rejecten, ingesloten frames kunnen geblokkeerd worden en gebruikers van een schermlezer horen nooit dat er iets is gebeurd. De demo hieronder kopieert echt in uw browser, en de code dekt elk van die gevallen.

Veelgestelde vragen

Waarom is navigator.clipboard undefined?

De pagina draait niet in een beveiligde context. De Clipboard API is alleen beschikbaar op HTTPS-pagina's en op localhost, dus een site die via gewoon HTTP of vanaf een lokaal netwerkadres wordt geserveerd, heeft hem niet.

Waarom geeft writeText een NotAllowedError?

De browser weigerde het schrijven, meestal omdat er geen recente gebruikersactie was, de pagina geen focus had of een frame werd geblokkeerd door Permissions Policy. Roep het direct aan in een klikhandler en vermijd lange awaits ervoor.

Heb ik een library nodig om in React naar het klembord te kopiëren?

Nee. Een hook van tien regels rond navigator.clipboard.writeText volstaat. Libraries voegen vooral een execCommand-fallback toe voor heel oude browsers, die huidige browsers niet nodig hebben.

Kan ik een afbeelding naar het klembord kopiëren?

Ja, met navigator.clipboard.write en een ClipboardItem met als sleutel image/png en als waarde een PNG-Blob. Gebruik ClipboardItem.supports() om eerst een type te controleren; PNG is het formaat dat browsers het betrouwbaarst accepteren.

Is document.execCommand('copy') nog in orde?

Het is verouderd. Het werkt in veel browsers nog onder wisselende voorwaarden, maar nieuwe code hoort de asynchrone Clipboard API te gebruiken, met als fallback de vraag aan de persoon om handmatig te kopiëren.

De drie regels die de browser afdwingt

Feedback die mensen kunnen waarnemen

Opgemaakte kopieën en eigen copy-events

Gewoon JavaScript

Kopieerknop met feedback en een fallback

Het statuselement is visueel verborgen maar wordt voorgelezen. Bij een fout wordt de tekst geselecteerd, zodat de persoon op Ctrl+C of Cmd+C kan drukken.

React-hook

useCopyToClipboard

Geeft de status en een kopieerfunctie terug. De timer wordt bij unmount gewist, zodat hij nooit een verwijderde component bijwerkt.

Opgemaakte tekst, afbeeldingen en het copy-event

HTML kopiëren met platte tekst als fallback

Elk MIME-type is een Blob. Plakdoelen kiezen het rijkste formaat dat ze begrijpen.

Een bronregel toevoegen aan gewone kopieën

Gebruik dit spaarzaam. Wijzigen wat mensen kopiëren kan irriteren, dus beperk het tot citaten of code waar een bron helpt.

Fouten en hun oorzaken

Als kopiëren mislukt

Gekopieerd

Mislukt

Kopiëren

Opgemaakte tekst kopiëren

Gekopieerd naar klembord

Kopiëren mislukt. Selecteer de tekst en druk op Ctrl+C of Cmd+C.

Probeer het

Kopieerknoppen voor platte tekst en opgemaakte HTML, met een plakvak om het resultaat te controleren.

Tekst om te kopiëren

Uitnodiging:

word lid van het team

Plak hier om te controleren (Ctrl+V of Cmd+V)

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap