Código
async function copiarTexto(texto, botao) {
const rotuloOriginal = botao.textContent;
try {
await navigator.clipboard.writeText(texto);
botao.textContent = 'Copiado!';
} catch {
const campo = document.createElement('textarea');
campo.value = texto;
campo.setAttribute('readonly', '');
campo.style.position = 'fixed';
campo.style.opacity = '0';
document.body.appendChild(campo);
campo.select();
document.execCommand('copy');
campo.remove();
botao.textContent = 'Copiado!';
}
window.setTimeout(() => {
botao.textContent = rotuloOriginal;
}, 1800);
}
Quando usar
Use em códigos, chaves, links, números de protocolo e qualquer conteúdo que a pessoa precise transferir sem selecionar manualmente.
Como adaptar ao seu projeto
Passe o texto e o próprio botão para a função. Mantenha uma mensagem visível de sucesso ou erro.
Antes de publicar
A Clipboard API normalmente exige HTTPS e uma ação do usuário. Nunca copie algo sem que a pessoa tenha solicitado.
Códigos relacionados
JavaScript
Debounce para campos de busca
Evita executar uma busca pesada a cada tecla e dispara a ação somente depois de uma pequena pausa.
JavaScriptLer e atualizar parâmetros da URL com JavaScript
Manipule filtros compartilháveis como ?categoria=css&ordem=recentes sem concatenar strings manualmente.
Git.gitignore para um projeto web
Base conservadora que evita versionar dependências, segredos locais, logs e arquivos gerados.