У меня была похожая проблема, когда мне приходилось копировать текст из элемента, используя только javascript. Я добавлю решение этой проблемы здесь для всех, кто заинтересован. Это решение работает для многих элементов HTML, включая textarea.
HTML:
<textarea id="text-to-copy">This is the text I want to copy</textarea>
<span id="span-text-to-copy">This is the text I want to copy</span>
Javascript:
let textElement = document.getElementById("text-to-copy");
//remove selection of text before copying. We can also call this after copying
window.getSelection().removeAllRanges();
//create a Range object
let range = document.createRange();
//set the Range to contain a text node.
range.selectNode(textElement);
//Select the text node
window.getSelection().addRange(range);
try {
//copy text
document.execCommand('copy');
} catch(err) {
console.log("Not able to copy ");
}
Обратите внимание: если вы хотите скопировать, например, элемент span, вы можете получить его текстовый узел и использовать его в качестве параметра для range.selectNode (), чтобы выделить этот текст:
let elementSpan = document.getElementById("span-text-to-copy");
let textNode = elementSpan.childNodes[0];