Javascript select() – Copy to Clipboard

select () markiert oder selektiert den Text einer Textarea oder eines Input-Felds. Das sieht fast genauso aus wie die Methode focus(), aber select () wählt den Text »kopierfähig«. document.execCommand('copy') kopiert einen mit select () markierten Text ins Clipboard, also in die Zwischenablage des Benutzers.

select () Text für Clipboard selektieren

Automatisch zur Zwischenablage

Die Methode markiert – selektiert – den gesamten Text in einem input- oder textarea-Element. document.execCommand('copy') kopiert den selektierten Inhalt in die Zwischenablage, den der Benutzer direkt übernehmen kann.

<textarea id="chupa"></textarea>
<button data-select="chupa">Markieren</button>

Script – Inhalt mit select auswählen

const copybutton = document.querySelector("button[data-select]");
copybutton.addEventListener ("click", (e) => {
	const copytarget = e.target.dataset.select;
	const inp = (copytarget ? document.getElementById(copytarget) : null);
	if (inp && inp.select) {
		inp.select();
	}
});
Text selektieren auf Touchscreens

Mobile Geräte können den selektierten Text direkt kopieren, Ausschneiden, Teilen oder übersetzen.

Select(): Copy to Clipboard

Das war einst die Hauptaufgabe für die Javascript-Methode select: den Text einer Textarea oder Input-Felds in das Clipboard – den Zwischenspeicher – zu kopieren. Die modernen Browser spielen da allerdings nicht mehr mit, sie lesen den Inhalt eines input- oder textarea-Feldes nicht ohne Weiteres und überschreiben nicht mir nichts dir nichts das Clipboard des Users.

Man stelle sich nur einmal vor, was ein Third-Party-Skript im Browser (z.B. ein AddOn) alles mit dem Inhalt eines Eingabefeldes anstellen könnte: z.B. Passwörter und andere sensible Daten auslesen.

Zwischenzeitlich waren execCommand() und cut, copy oder paste ein Weg, den Inhalt eines Eingabefeldes in die Zwischenablage zu kopieren. Diese Funktionen unterliegen aber Einschränkungen und sind zwischen unterschiedlichen Betriebssystemen und Browsern nicht konsistent (z.B.: IE11 öffnet zunächst ein modales Fenster und fragt, ob der Text tatsächlich kopiert werden darf).

Clipboard-API

execCommand() gilt heute als veraltet (deprecated), stattdessen haben wir das Clipboard-API und writeText.

Das Clipboard API ist die modernere Methode für den lesenden und schreibenden Zugriff auf die Zwischenablage, um Anwendungen zu ermöglichen, Text oder andere Datenformate zu schreiben und zu lesen.


<div class="msg"></div>
<textarea id="website">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pulvinar, arcu quis </textarea>
<button data-copy="#website">copy</button>

Script: Inhalt in die Zwischenablage kopieren

const copybutton = document.querySelector("button[data-copy]");
copybutton.addEventListener('click', function(e) {
	const copytarget = e.target.dataset.copy;
	const inp = (copytarget ? document.querySelector(copytarget) : null);
	if (inp && inp.select) {
		inp.select();
		navigator.clipboard.writeText(inp.value).then(() => {
			document.querySelector(".msg").textContent = "Text in die Zwischenablage kopiert";
			
		},() => {
			console.error('Fehler beim Koperen');
		});
		inp.blur();
    }
});

Das Clipboard-Api wird nur auf Webseiten unterstützt, die mit HTTPS ausgeliefert werden.

clipboard.writeText(text) und clipboard.readText(text)

  • navigator.clipboard.readText() liest Text aus der Zwischenablage.
  • navigator.clipboard.writeText() schreibt Text in die Zwischenablage.

async function copyText() {
	try {
		const text = document.getElementById('textToCopy').value;
		await navigator.clipboard.writeText(text);
		document.querySelector("#pasted").innerHTML = "Text wurde in die Zwischenablage kopiert";
	} catch (err) {
		console.error('Fehler beim Kopieren in die Zwischenablage:', err);
	}
}

async function pasteText() {
	try {
		const text = await navigator.clipboard.readText();
		document.getElementById('pastedText').innerText = text;
	} catch (err) {
		console.error('Fehler beim Lesen aus der Zwischenablage:', err);
	}
}
Suchen auf mediaevent.de