Копирование текста в буфер
4 августа 2023
Код был взят с некоторыми форматными доработками из записи https://stackoverflow.com/a/65996386
/**
* Копирует строку в буфер обмена
*
* @param string|int str - строка, которая будет скопирована в буфер
* @param function fCallBack - функция, вызываемая после копирования текста
* @return void
*/
function copyToClipboardSP(str, fCallBack) {
//Пробуем копировать через свойство clipboard
if (navigator.clipboard && window.isSecureContext) {
navigator.clipboard.writeText(str).then(null);
}
//Если не удалось скопировать обычным способом, то копируем с помощью элемента textarea (старый способ)
else {
//Создаём элемент textarea и помещаем в него текст
let textArea = document.createElement("textarea");
textArea.value = str;
//Стилизуем textarea, чтобы он размещался за пределами области просмотра страницы
textArea.style.position = "fixed";
textArea.style.left = "-999999px";
textArea.style.top = "-999999px";
document.body.appendChild(textArea);
//Выделяем текст в textarea, копируем текст и затем удаляем textarea
textArea.focus();
textArea.select();
document.execCommand('copy');
textArea.remove();
}
if (typeof fCallBack == 'function') {
fCallBack();
}
}