This commit is contained in:
fruworg 2023-08-02 22:25:41 +06:00
parent 50b867f53e
commit 5820838ad8

View File

@ -1,28 +1,42 @@
// Получаем элементы, с которыми будем работать // Получаем все элементы с классом "highlight"
const codeElement = document.querySelector('.highlight code'); const codeElements = document.querySelectorAll('.highlight');
const spanElement = codeElement.querySelector('span span');
// Добавляем обработчик события на ::before псевдоэлемент // Добавляем обработчик события на каждый элемент с классом "highlight"
codeElement.addEventListener('click', () => { codeElements.forEach((highlightBlock) => {
// Создаем временный элемент textarea // Находим элемент с тегом "code" внутри текущего блока "highlight"
const tempTextarea = document.createElement('textarea'); const codeElement = highlightBlock.querySelector('code');
// Устанавливаем значение текста в textarea равным тексту из span // Находим все span-элементы внутри блока
tempTextarea.value = spanElement.textContent; const spanElements = highlightBlock.querySelectorAll('span');
// Добавляем textarea в документ (необходимо, чтобы метод .select() сработал) // Создаем текст, объединяя содержимое всех span-элементов внутри текущего блока "highlight"
document.body.appendChild(tempTextarea); let combinedText = '';
spanElements.forEach((spanElement) => {
// Выделяем текст в textarea combinedText += spanElement.textContent;
tempTextarea.select(); });
// Копируем выделенный текст в буфер обмена // Добавляем обработчик события на клик по элементу "code"
document.execCommand('copy'); codeElement.addEventListener('click', () => {
// Создаем временный элемент textarea
// Удаляем временный элемент textarea const tempTextarea = document.createElement('textarea');
document.body.removeChild(tempTextarea);
// Устанавливаем значение текста в textarea равным объединенному тексту
// Можно добавить визуальную обратную связь для пользователя, например, изменить стиль ::before tempTextarea.value = combinedText;
// codeElement.style.setProperty('content', '"Copied!"');
// setTimeout(() => codeElement.style.removeProperty('content'), 1000); // Добавляем 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);
});
}); });