themu/static/js/copy.js

42 lines
2.1 KiB
JavaScript
Raw Normal View History

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