document.addEventListener("DOMContentLoaded", function() { document.querySelectorAll('pre').forEach(function(pre) { // Evita duplicar o botão copiar if (pre.querySelector('.copy-btn')) return; pre.style.position = 'relative'; // importante para posicionamento absoluto do botão // Criar botão copiar com ícone SVG const copyBtn = document.createElement('button'); copyBtn.className = 'copy-btn'; copyBtn.type = 'button'; copyBtn.setAttribute('aria-label', 'Copiar código'); // Ícone clipboard SVG inline copyBtn.innerHTML = ` `; copyBtn.addEventListener('click', function() { const codeElement = pre.querySelector('code'); let textToCopy = ''; if (codeElement) { textToCopy = codeElement.innerText; } else { // Copiar apenas texto puro do
ignorando o botão
textToCopy = Array.from(pre.childNodes)
.filter(node => node.nodeType === Node.TEXT_NODE)
.map(node => node.textContent)
.join('');
}
navigator.clipboard.writeText(textToCopy).then(() => {
// Feedback visual simples
copyBtn.innerHTML = `
`;
setTimeout(() => {
copyBtn.innerHTML = `
`;
}, 1500);
}).catch(() => {
// Se erro, exibe ícone de erro (vermelho)
copyBtn.innerHTML = `
`;
setTimeout(() => {
copyBtn.innerHTML = `
`;
}, 1500);
});
});
pre.appendChild(copyBtn);
});
});