Text aus Span Element kopieren?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hier mal ein Testcase, wie man es machen kann:

https://jsfiddle.net/g2c3u4zs/2/

HTML:

<span id="test">Hello World</span>
<button id="button">Text in Zwischenablage kopieren</button>

Javascript:

var textElement = document.getElementById("test");

document.getElementById("button").addEventListener("click", function(e) {
 var inputElement = document.createElement("input");

 inputElement.type="text";
 inputElement.value = textElement.innerText;

 document.body.insertBefore(inputElement, textElement); 

 inputElement.select(); 
 inputElement.setSelectionRange(0, 99999);

 document.execCommand("copy");
  
 inputElement.remove();
});

Gruß

Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.
Babelfish  10.09.2020, 10:39

Die Variante von regex9 scheint eleganter und kürzer zu sein. Wenn du also nur Text aus einem sichtbaren Element kopieren willst, würde ich die bevorzugen.

Meine Variante mit einem temporären INPUT-Element lässt sich dagegen auch gut verwenden, wenn man nicht sichtbaren Text (bspw. aus einem data-Attribut) in die Zwischenablage kopieren will. Dort braucht man ein extra Element.

0

Angenommen, du hast ein span-Element mit der ID some-span:

const range = document.createRange();
range.selectNode(document.getElementById("some-span"));

const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);

document.execCommand("copy");

selection.removeAllRanges();

Erst wird eine Range um das Element gezogen und diese dann der aktuellen Selektion zugefügt. Mit execCommand wird der Text in die Zwischenablage kopiert.

<button id="copy" onclick="copy()">Copy</button>

<input type="text" value="Hidden Text to Copy" id="myInput" style="display:none;">

<script>
  function copy() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  copyText.setSelectionRange(0, 99999); /*For mobile devices*/
  document.execCommand("copy");
  }
</script>
Ollig00 
Fragesteller
 08.09.2020, 13:03

Danke, auf dieser Seite war ich auch schon, allerdings ist da nicht korrekt bzw. funktioniert nicht. Ein Span Element kann man anscheinend nicht auswählen.

0
RakonDark  08.09.2020, 13:05
@Ollig00

kannst du schon aber dann ist es innerHTML und nicht value etc .

0
RakonDark  08.09.2020, 13:21
@Ollig00

https://jsfiddle.net/c9tn1vup/1/

<!DOCTYPE html>
<html>
<body>

<p>Click on the button to copy the text from the text field. Try to paste the text (e.g. ctrl+v) afterwards in a different window, to see the effect.</p>

<span type="text" value="Hello World" id="myInput">mytext</span>
<button onclick="myFunction()">Copy text</button>

<p>The document.execCommand() method is not supported in IE8 and earlier.</p>

<script>
function myFunction() {
 let range = new Range();
 range.selectNodeContents(myInput);
 document.getSelection().addRange(range);
 document.execCommand("copy");
 alert("Copied the text: " + document.getSelection().toString());
}
</script>

</body>
</html>
0