Хаки и Скрипты Next Generation CMS

Переезд часть 7.....Хочу кнопку копировать содержимое !!!

irbees2008 irbees2008 Опубликовано - 12 - сентября Разное
  • Автор: irbees2008
  • Уровень сложности исполнения: это делается простым копированием и нажиманием кнопки

Все привет.
И так сегодня решал не большую проблемку и по пути так чтобы было удобно пользователям, добавил там одну интересную и простую плюшку.
И так народ это касается всех ваших бэкапов, если у вас бэкап только базы , и вы не помните какие изменения были в движке ,шаблоне, то не надо сразу в падать в панику, а ни чего не получается и т.д. .Есть форум, есть телеграм чат, есть вот этот сайт ,можно почитать ,поискать инфу, и спросить на конец в чате или на форуме, что сделать и как.
Поэтому старайтесь сохранить полный бэкап сайта , а не только базую
Так вот если у вас только база и все, вы нашли такой же шаблон , адаптировали , но смотрите а там то не выделяется, это не правильно, значит в старом шаблоне были правки которые вы благополучно забыли, но можно спросить как это делать, или попросить поправить.
Так вот там отсутствовали стили для тега pre и code , добавил их и параллельно добавил скрипт копирования кода или текста из блока pre

Код:
<script>
// Автоматически добавляем кнопки ко всем pre элементам
document.addEventListener('DOMContentLoaded', function() {
const preElements = document.querySelectorAll('pre');
preElements.forEach((pre, index) => {
if (!pre.id) {
pre.id = 'pre-' + index;
}
// Создаем контейнер
const container = document.createElement('div');
container.style.display = 'flex';
container.style.alignItems = 'center';
container.style.margin = '5px 0';
// Создаем кнопку с SVG
const button = document.createElement('button');
button.className = 'copy-btn';
button.title = 'Копировать код';
button.innerHTML = `
<svg viewBox="0 0 24 24">
<path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>
</svg>
`;
// Создаем элемент для статуса
const statusSpan = document.createElement('span');
statusSpan.id = pre.id + '-status';
statusSpan.className = 'copy-status';
// Добавляем обработчик
button.onclick = function() {
copyPreContent(pre.id, button);
};
// Добавляем элементы в контейнер
container.appendChild(button);
container.appendChild(statusSpan);
// Вставляем контейнер после pre элемента
pre.parentNode.insertBefore(container, pre.nextSibling);
});
});
// Функция для копирования
function copyPreContent(preId, button) {
const preElement = document.getElementById(preId);
const statusElement = document.getElementById(preId + '-status');
if (!preElement) return;
const textToCopy = preElement.textContent;
navigator.clipboard.writeText(textToCopy)
.then(() => {
showStatus(statusElement, 'Скопировано!', 'success');
button.classList.add('copied');
setTimeout(() => {
button.classList.remove('copied');
hideStatus(statusElement);
}, 2000);
})
.catch(err => {
console.error('Ошибка:', err);
showStatus(statusElement, 'Ошибка копирования', 'error');
setTimeout(() => hideStatus(statusElement), 2000);
});
}
// Функции для отображения статуса
function showStatus(element, message, type) {
if (element) {
element.textContent = message;
element.className = 'copy-status show ' + type;
}
}
function hideStatus(element) {
if (element) {
element.className = 'copy-status';
}
}
</script>
<style>
.copy-btn {
margin-left: 10px;
padding: 6px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
transition: all 0.2s ease;
}
.copy-btn:hover {
background: #f5f5f5;
border-color: #ccc;
}
.copy-btn.copied {
background: #e8f5e8;
border-color: #4caf50;
}
.copy-btn svg {
width: 16px;
height: 16px;
fill: #666;
}
.copy-btn:hover svg {
fill: #333;
}
.copy-btn.copied svg {
fill: #4caf50;
}
.copy-status {
margin-left: 10px;
font-size: 12px;
opacity: 0;
transition: opacity 0.3s ease;
}
.copy-status.show {
opacity: 1;
}
.copy-status.success {
color: #4caf50;
}
.copy-status.error {
color: #f44336;
}
</style>
На данный момент все работает, все выделено, все копируется, тестируем и пользуемся ))))

Можешь почитать и вот эту статейку "Спрятать блок на мобилках"

Опрос

Ваше мнение

На каком движке ваш сайт?
Результаты

Последние комментарии

Теги

Anything in here will be replaced on browsers that support the canvas element

Статистика

  • Caйт cущecтвуeт: 4631 день
  • Статических страниц: 10
  • Категорий: 28
  • Новостей: 619
  • Неопубликованных новостей: 8
  • Комментариев: 257
  • Зарегестрированных пользователей: 779
  • Онлайн всего: [4]
  • Гости: [3]
  • Поисковые роботы: [1] Яндекс
  • Сегодня нас посетили: [8] Google, Larrytitly, Яндекс, Яндекс, irbees2008, Google, dankeanke, Google
  • SQL запросов: 37
  • Генерация страницы: 0.118сек
  • Потребление памяти: 4.151 Mb 
  •   Яндекс.Метрика