Button zum Kopieren in die Zwischenablage (JavaScript und React)

Button zum Kopieren in die Zwischenablage

In die Zwischenablage kopieren: Button in JavaScript und React | We.Inc

Baue einen Kopier-Button mit navigator.clipboard.writeText: funktionierende Demo, ein React-Hook, Kopieren von HTML und Bildern mit ClipboardItem, barrierefreies Feedback beim Kopieren und Fehlerbehandlung.

Rufe navigator.clipboard.writeText(text) in einem Klick-Handler auf. Es gibt ein Promise zurück, warte also mit await darauf, zeige dann eine kurze Meldung wie Kopiert an und fange den Fehlerfall ab. Die API funktioniert nur über HTTPS oder auf localhost und braucht eine echte Nutzeraktion wie einen Klick, rufe sie also nicht beim Laden der Seite auf.

Wege, Daten in die Zwischenablage zu legen

Ein Kopier-Button wirkt trivial, doch die Snippets, die gut ranken, lassen oft genau die Teile weg, die schiefgehen: Das Promise kann fehlschlagen, eingebettete Frames können blockiert sein, und Screenreader-Nutzer erfahren nie, dass etwas passiert ist. Die Demo unten kopiert wirklich in deinem Browser, und der Code deckt jeden dieser Fälle ab.

Häufige Fragen

Warum ist navigator.clipboard undefined?

Die Seite befindet sich nicht in einem sicheren Kontext. Die Clipboard API steht nur auf HTTPS-Seiten und auf localhost zur Verfügung, eine Website, die über reines HTTP oder eine lokale Netzwerkadresse ausgeliefert wird, hat sie also nicht.

Warum wirft writeText einen NotAllowedError?

Der Browser hat das Schreiben verweigert, meist weil es keine aktuelle Nutzeraktion gab, die Seite nicht fokussiert war oder ein Frame durch die Permissions Policy blockiert wurde. Rufe es direkt in einem Klick-Handler auf und vermeide lange awaits davor.

Brauche ich in React eine Bibliothek zum Kopieren in die Zwischenablage?

Nein. Ein zehnzeiliger Hook um navigator.clipboard.writeText reicht aus. Bibliotheken ergänzen meist nur einen execCommand-Fallback für sehr alte Browser, den aktuelle Browser nicht brauchen.

Kann ich ein Bild in die Zwischenablage kopieren?

Ja, mit navigator.clipboard.write und einem ClipboardItem, dessen Schlüssel image/png und dessen Wert ein PNG-Blob ist. Prüfe einen Typ vorher mit ClipboardItem.supports(), PNG ist das Format, das Browser am zuverlässigsten annehmen.

Ist document.execCommand('copy') noch in Ordnung?

Es ist veraltet. In vielen Browsern funktioniert es unter wechselnden Bedingungen noch, aber neuer Code sollte die asynchrone Clipboard API verwenden und als Fallback die Person bitten, manuell zu kopieren.

Die drei Regeln, die der Browser durchsetzt

Feedback, das Menschen wahrnehmen können

Formatiertes Kopieren und eigene copy-Events

Reines JavaScript

Kopier-Button mit Feedback und Fallback

Das Status-Element ist visuell verborgen, wird aber vorgelesen. Bei einem Fehler wird der Text markiert, damit die Person Ctrl+C oder Cmd+C drücken kann.

React-Hook

useCopyToClipboard

Gibt den Zustand und eine copy-Funktion zurück. Der Timer wird beim Unmount gelöscht, damit er nie eine entfernte Komponente aktualisiert.

Formatierter Text, Bilder und das copy-Event

HTML mit Fallback als reiner Text kopieren

Jeder MIME-Typ ist ein Blob. Einfügeziele wählen das reichhaltigste Format, das sie verstehen.

Normalen Kopien eine Quellenzeile hinzufügen

Sparsam einsetzen. Zu ändern, was Leute kopieren, kann sie nerven, beschränke es also auf Zitate oder Code, bei denen eine Quelle hilft.

Fehler und ihre Ursachen

Wenn das Kopieren fehlschlägt

Kopiert

Fehlgeschlagen

Kopieren

Formatierten Text kopieren

In die Zwischenablage kopiert

Kopieren fehlgeschlagen. Markiere den Text und drücke Ctrl+C oder Cmd+C.

Probier es aus

Kopier-Buttons für reinen Text und formatiertes HTML, mit einem Einfügefeld zum Prüfen des Ergebnisses.

Zu kopierender Text

Einladung:

tritt dem Team bei

Zum Prüfen hier einfügen (Ctrl+V oder Cmd+V)

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap