JavaScript javascript

Botão para copiar texto com Clipboard API

Função de cópia com retorno visual e alternativa para navegadores sem acesso à API moderna.

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