Kopieren in die Zwischenablage mit JavaScript: 3 funktionierende Methoden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Drei Möglichkeiten, Text mit JavaScript in die Zwischenablage zu kopieren: Von alt bis modern

\n\n

Haben Sie sich jemals gefragt, wie die Magie des "Kopieren"-Buttons funktioniert? Sie klicken – und der Link, Code oder Gutscheincode ist bereits in der Zwischenablage. Kein Blinken, kein Scrollen, keine überflüssigen Bewegungen. Diese scheinbar einfache Aufgabe ist eine der häufigsten Fragen auf Stack Overflow. Und das nicht ohne Grund: Die Implementierung des Kopierens in die Zwischenablage mit JavaScript birgt Fallstricke, Browserunterschiede und gleich drei Epochen der Webentwicklung.

\n\n

In diesem Artikel analysieren wir alle Methoden zum Kopieren von Text in die Zwischenablage mit JavaScript: vom guten alten (und fast toten) document.execCommand bis zur modernen, asynchronen navigator.clipboard. Sie erfahren nicht nur, wie Sie Text kopieren, sondern auch, wie Sie dies sicher, elegant und mit Unterstützung für alte Browser tun. Los geht's!

\n\n

Warum das Kopieren in die Zwischenablage nicht "einfach" ist

\n\n

Auf den ersten Blick scheint es: Was ist daran schon schwierig? Text nehmen, in die Zwischenablage senden. Aber Browser sind paranoid. Sie wollen nicht, dass jedes Skript auf einer Website ohne Ihr Wissen in die Zwischenablage schreiben oder daraus lesen kann. Stellen Sie sich vor: Sie öffnen eine Website und sie ersetzt im Hintergrund das kopierte Passwort durch "SendBitcoinToMe". Schrecklich, oder?

\n\n

Deshalb hat JavaScript strenge Regeln: Kopieren ist nur bei einer aktiven Benutzeraktion (Klick, Tastendruck) möglich. Und selbst mit dieser Bedingung funktionieren nicht alle APIs gleich. Lassen Sie uns das klären.

\n\n

Methode Nr. 1: Der Klassiker – document.execCommand('copy')

\n\n

Wie es funktioniert

\n\n

Früher, im Zeitalter der Dinosaurier (etwa vor 2020), war der einzige Weg, Text in die Zwischenablage zu kopieren, ein Trick mit execCommand. Die Idee ist einfach:

\n
    \n
  • Erstellen Sie ein temporäres textarea oder input.
  • \n
  • Fügen Sie den gewünschten Text ein.
  • \n
  • Markieren Sie ihn (über select()).
  • \n
  • Rufen Sie document.execCommand('copy') auf.
  • \n
  • Entfernen Sie das temporäre Element.
  • \n
\n\n

So sieht das im Code aus:

\n\n
function copyToClipboardLegacy(text) {\n    // Temporäres Element erstellen\n    const textarea = document.createElement('textarea');\n    textarea.value = text;\n    // Unsichtbar machen\n    textarea.style.position = 'fixed';\n    textarea.style.opacity = '0';\n    document.body.appendChild(textarea);\n    // Text markieren\n    textarea.select();\n    textarea.setSelectionRange(0, 99999); // Für mobile Geräte\n    // Kopieren\n    try {\n        const successful = document.execCommand('copy');\n        if (successful) {\n            console.log('Text kopiert!');\n        } else {\n            console.error('Kopieren fehlgeschlagen');\n        }\n    } catch (err) {\n        console.error('Kopierfehler:', err);\n    }\n    // Aufräumen\n    document.body.removeChild(textarea);\n}
\n\n

Vor- und Nachteile

\n

Vorteile: Funktioniert sogar im Internet Explorer 9. Keine Berechtigungen erforderlich.

\n

Nachteile: Gilt als veraltet (deprecated). Synchron – blockiert den Hauptthread während des Kopierens. Ungeeignet zum Kopieren großer Datenmengen. Und am wichtigsten: In modernen Browsern kann es jederzeit entfernt werden.

\n\n

Tipp: Wenn Sie ein neues Projekt schreiben – verwenden Sie nicht execCommand. Aber für die Unterstützung wirklich alter Browser (IE11, alter Edge) ist dies die einzige Option.

\n\n

Methode Nr. 2: Modern – Clipboard API (navigator.clipboard)

\n\n

Wie es funktioniert

\n\n

An die Stelle der Krücken ist die Clipboard API getreten – asynchron, sicher und flexibel. Sie lebt im Objekt navigator.clipboard und kann nicht nur schreiben, sondern auch aus der Zwischenablage lesen (mit Benutzererlaubnis).

\n\n

Zum Kopieren wird die Methode writeText() verwendet:

\n\n
async function copyToClipboardModern(text) {\n    try {\n        await navigator.clipboard.writeText(text);\n        console                

Blogs

Buchempfehlungen