mirror of
https://github.com/fruworg/themu.git
synced 2024-11-16 07:07:16 +03:00
copy
This commit is contained in:
parent
96356946d0
commit
50b867f53e
@ -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
|
||||||
|
tempTextarea.select();
|
||||||
|
|
||||||
|
// Копируем выделенный текст в буфер обмена
|
||||||
document.execCommand('copy');
|
document.execCommand('copy');
|
||||||
document.body.removeChild(tempInput);
|
|
||||||
}
|
// Удаляем временный элемент textarea
|
||||||
|
document.body.removeChild(tempTextarea);
|
||||||
|
|
||||||
|
// Можно добавить визуальную обратную связь для пользователя, например, изменить стиль ::before
|
||||||
|
// codeElement.style.setProperty('content', '"Copied!"');
|
||||||
|
// setTimeout(() => codeElement.style.removeProperty('content'), 1000);
|
||||||
});
|
});
|
Loading…
Reference in New Issue
Block a user