Я не уверен, что вы можете скопировать из абзаца. Что вы можете попробовать, хотя это
- Создание текстовой области на лету.
- Назначьте ему внутренний текст параграфа,
- Добавьте текстовую область в документ .body
- Выполнить копию на нем
- И немедленно удалить его.
См. пример фрагмента ниже
function copyText() {
const textEl = document.createElement('textarea');
const paragraph = document.getElementById('ptag');
textEl.value = paragraph.innerHTML;
document.body.appendChild(textEl);
textEl.select();
document.execCommand('copy');
document.body.removeChild(textEl);
}
Вы должны знать, что это если в абзаце есть дочерние элементы, и вы не хотите их копировать, вы можете их очистить. Простой метод, подобный этому, может удалить теги.
htmlElement.replace(/(<([^>]+)>)/ig, ' ');
Вы должны запустить его на innerText, прежде чем присваивать значение textArea.