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 => {
codeBlock.addEventListener('click', function() {
const textToCopy = this.nextElementSibling.innerText;
copyTextToClipboard(textToCopy);
alert('Текст скопирован в буфер обмена: ' + textToCopy);
});
});
// Добавляем обработчик события на ::before псевдоэлемент
codeElement.addEventListener('click', () => {
// Создаем временный элемент textarea
const tempTextarea = document.createElement('textarea');
function copyTextToClipboard(text) {
const tempInput = document.createElement('textarea');
tempInput.style.position = 'absolute';
tempInput.style.left = '-9999px';
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand('copy');
document.body.removeChild(tempInput);
}
// Устанавливаем значение текста в 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);
});