Como copiar valores para área de transferência

Veja como é simples utilizar o JavaScript para copiar valores para a área de transferência (clipboard) do seu usuário.

Por mais que copiar um texto da tela de um website seja tão simples quanto um CTRL+C ou selecionar o texto e clicar com o botão direito e copiar, hoje em dia algumas tecnologias como os dispositivos moveis tornam essa função um pouco menos prática. Tente você mesmo selecionar um trecho de texto e aposto que acontecerá de ter problemas pegando todos os dados ou dados a mais do que precisava.

Outra coisa que pode acontecer, e acontece para os clientes do meu sistema, é a quando uma tela com diversas interações dentro da tabela acaba causando problemas que desfazem a seleção. Mas vamos ao que interessa, você provavelmente precisa:

  1. Copiar um texto de um campo ou
  2. Copiar um texto de uma variável.

Ambos casos são bem parecidos, mas vou mostra-los separados para quebrar o código em pedaços pequenos.

Com copiar o valor de um campo para a área de transferência usando o JavaScript

Como você poderá ver, o códifo é simples e consiste em capturar o elemento, selecionar o texto e executar o comando de copiar o texto selecionado

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <input id="inputTest"/>
    <button onclick="copiarTexto()">Copiar</button>
    <script>
        let copiarTexto = () =>{
            //captura o elemento input
            const inputTest = document.querySelector("#inputTest");
            
            //seleciona todo o texto do elemento
            inputTest.select();
            //executa o comando copy
            //aqui é feito o ato de copiar para a area de trabalho com base na seleção
            document.execCommand('copy');

        };
    </script>
</body>
</html>

Com copiar de uma variável para a área de transferência usando o JavaScript

Este segundo caso tem um ar de gambiarra, então se você souber de um jeito melhor, por favor me avise para que eu possa atualizar o código. Precisaremos criar o elemento, imitar o comportamento anterior e remover o elemento.

Por sorte, o JavaScript processa tudo isso de uma forma tão rápida que o campo nunca é visível para o usuário. Por precaução, tente deixa-lo sempre no final do código ou em algum lugar onde ele não atrapalhe o fluxo. É importante que você não use type hidden ou display none, pois em ambos casos não será possível fazer a seleção de texto.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <button onclick="copiarTexto()">Copiar</button>
    <script>
        let copiarTexto = () => {
            //O texto que será copiado
            const texto = "Lorem Ipsum Dolor";

            //Cria um elemento input (pode ser um textarea)
            let inputTest = document.createElement("input");
            inputTest.value = texto;

            //Anexa o elemento ao body
            document.body.appendChild(inputTest);

            //seleciona todo o texto do elemento
            inputTest.select();
            //executa o comando copy
            //aqui é feito o ato de copiar para a area de trabalho com base na seleção
            document.execCommand('copy');

            //remove o elemento
            document.body.removeChild(inputTest);
        };
    </script>
</body>
</html>

Ai está. Espero que esses trechos de códigos tenham sido úteis. Caso você tenha sugestões ou melhorias, por favor deixe nos comentários.

Deixe um comentário