themu/static/js/copy.js
2023-08-02 22:25:41 +06:00

42 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Получаем все элементы с классом "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
// codeElement.style.setProperty('content', '"Copied!"');
// setTimeout(() => codeElement.style.removeProperty('content'), 1000);
});
});