themu/static/js/copy.js

28 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-08-02 19:15:52 +03:00
// Получаем элементы, с которыми будем работать
const codeElement = document.querySelector('.highlight code');
const spanElement = codeElement.querySelector('span span');
2023-08-01 19:23:53 +03:00
2023-08-02 19:15:52 +03:00
// Добавляем обработчик события на ::before псевдоэлемент
codeElement.addEventListener('click', () => {
// Создаем временный элемент textarea
const tempTextarea = document.createElement('textarea');
// Устанавливаем значение текста в textarea равным тексту из span
tempTextarea.value = spanElement.textContent;
// Добавляем textarea в документ (необходимо, чтобы метод .select() сработал)
document.body.appendChild(tempTextarea);
// Выделяем текст в textarea
tempTextarea.select();
// Копируем выделенный текст в буфер обмена
document.execCommand('copy');
// Удаляем временный элемент textarea
document.body.removeChild(tempTextarea);
// Можно добавить визуальную обратную связь для пользователя, например, изменить стиль ::before
// codeElement.style.setProperty('content', '"Copied!"');
// setTimeout(() => codeElement.style.removeProperty('content'), 1000);
2023-08-01 19:23:53 +03:00
});