This commit is contained in:
fruworg 2023-08-02 22:15:52 +06:00
parent 96356946d0
commit 50b867f53e

View File

@ -1,22 +1,28 @@
document.addEventListener('DOMContentLoaded', function() { // Получаем элементы, с которыми будем работать
const codeBlocks = document.querySelectorAll('.highlight pre code[class*="language-"]::before'); const codeElement = document.querySelector('.highlight code');
const spanElement = codeElement.querySelector('span span');
codeBlocks.forEach(codeBlock => { // Добавляем обработчик события на ::before псевдоэлемент
codeBlock.addEventListener('click', function() { codeElement.addEventListener('click', () => {
const textToCopy = this.nextElementSibling.innerText; // Создаем временный элемент textarea
copyTextToClipboard(textToCopy); const tempTextarea = document.createElement('textarea');
alert('Текст скопирован в буфер обмена: ' + textToCopy);
});
});
function copyTextToClipboard(text) { // Устанавливаем значение текста в textarea равным тексту из span
const tempInput = document.createElement('textarea'); tempTextarea.value = spanElement.textContent;
tempInput.style.position = 'absolute';
tempInput.style.left = '-9999px'; // Добавляем textarea в документ (необходимо, чтобы метод .select() сработал)
tempInput.value = text; document.body.appendChild(tempTextarea);
document.body.appendChild(tempInput);
tempInput.select(); // Выделяем текст в textarea
document.execCommand('copy'); tempTextarea.select();
document.body.removeChild(tempInput);
} // Копируем выделенный текст в буфер обмена
document.execCommand('copy');
// Удаляем временный элемент textarea
document.body.removeChild(tempTextarea);
// Можно добавить визуальную обратную связь для пользователя, например, изменить стиль ::before
// codeElement.style.setProperty('content', '"Copied!"');
// setTimeout(() => codeElement.style.removeProperty('content'), 1000);
}); });