JS Код стилизации блока кода

document.addEventListener("DOMContentLoaded", function () {
  // Преобразуем все [code] в стилизованный <pre>
  document.querySelectorAll("code").forEach((codeBlock) => {
    // Проверяем, если уже стилизовано, пропускаем
    if (codeBlock.classList.contains("styled")) return;

    // Добавляем класс для предотвращения повторной обработки
    codeBlock.classList.add("styled");

    // Создаем кнопку "Копировать"
    const copyButton = document.createElement("button");
    copyButton.textContent = "Копировать";
    copyButton.className = "copy-code-btn";

    // Устанавливаем относительное позиционирование для [code]
    codeBlock.style.position = "relative";

    // Добавляем кнопку в блок [code]
    codeBlock.appendChild(copyButton);

    // Обработчик для кнопки копирования
    copyButton.addEventListener("click", () => {
      // Исключаем кнопку из копируемого текста
      const textToCopy = Array.from(codeBlock.childNodes)
        .filter((node) => node.nodeType === Node.TEXT_NODE || node.nodeName !== "BUTTON")
        .map((node) => node.textContent)
        .join("");

      // Копируем текст
      navigator.clipboard.writeText(textToCopy).then(() => {
        copyButton.textContent = "Скопировано!";
        setTimeout(() => (copyButton.textContent = "Копировать"), 2000);
      }).catch(() => {
        copyButton.textContent = "Ошибка!";
        setTimeout(() => (copyButton.textContent = "Копировать"), 2000);
      });
    });
  });
});

© SALAKHIEV.RU, 2026

Вся информация, размещённая на сайте salakhiev.ru, предназначена исключительно для ознакомления и не может рассматриваться как руководство к действию, гарантия результата или техническая рекомендация. Администрация сайта не несёт ответственности за возможные убытки или иные последствия, вызванные использованием представленных материалов. Пользователь принимает на себя все риски, связанные с применением информации, размещённой на данном ресурсе. Политика конфиденциальности здесь.