Копирование текста в буфер

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();
    }
}