c贸mo copiar al portapapeles con Javascript

Si te preguntabas c贸mo copiar al portapapeles con JavaScript, esta es tu entrada. A continuaci贸n te explico c贸mo puedes a帽adir un bot贸n para copiar textos de tu web y tambi茅n poder pegarlos.

Qu茅 es el portapapeles o clipboard

El portapapeles es una herramienta que permite almacenar informaci贸n de manera temporal. Puede ser cualquier tipo de dato, im谩genes, texto, archivos…

La manera que tenemos de pasarle informaci贸n normalmente es copiando o cortando, y la manera de ser extra铆da para usarla es pegando.

En general el portapapeles que usamos por defecto en nuestros ordenadores y en muchos m贸viles, permite guardar un elemento y acceder a ese 煤ltimo, de manera que si copiamos o cortamos otro elemento, no tendremos acceso al anterior. Aunque ese es el comportamiento m谩s corriente, los sistemas operativos (tanto en m贸vil como en PC) ya incorporan herramientas donde puedes ver una lista de las 煤ltimas cosas que se han guardado y seleccionar una de ellas para pegarla.

C贸mo se accede al portapapeles

Lo que muchos usuarios de PC har谩n ser谩 hacer clic derecho y seleccionar alguna de las opciones de Copiar, Cortar o Pegar.

No obstante, hay alg煤n comando que al menos en mi opini贸n es m谩s c贸modo y m谩s r谩pido, y son Ctrl + C (copiar), Ctrl + X (cortar) y Ctrl + V (pegar). Para Mac los comando son command+ C (copiar), command+ X (cortar) y command+ V (pegar).

Windows ahora trae una herramienta a la cual se accede mediante la tecla Windows + V, y permite ver el historial del portapapeles, entre otras cosas:

vista de la herramienta portapapeles de windows 11

La API del portapapeles o Clipboard API

La API del portapapeles permite al navegador acceder al portapapeles del sistema de manera as铆ncrona. Si bien para que un usuario pueda copiar, a trav茅s de la API del navegador, a su portapapeles, el permiso es concedido simplemente por estar activa la pesta帽a del navegador. No ocurre lo mismo con el permiso para pegar desde el portapapeles, donde se necesita pedir permiso al usuario mediante la API de Permisos.

C贸mo copiar texto al portapapeles con JavaScript

Lo primero que tendr铆amos que hacer ser铆a seleccionar el texto, podr铆amos hacerlo seleccion谩ndolo mediante su ID. Para ello primero habr铆a que crear el texto:

<p id="textToCopy">El texto a copiar.</p>

Con el texto creado en JavaScript lo seleccionamos y lo guardamos en un variable

 const copiedText = document.getElementById("textToCopy").value;

Ahora, utilizaremos la interfaz Navigator y la Clipboard API para copiar el valor del texto que hemos seleccionado. Primero, seleccionamos el texto mediante su ID y luego copiamos ese valor al portapapeles usando el m茅todo writeText de la Clipboard API. seleccionando copiedText:

navigator.clipboard.writeText(copiedText)

Esto si lo ejecutamos tal cual, por ser la manera en la que accede al portapapeles as铆ncrona, nos devolver谩 una promesa, as铆 que tendremos que utilizar .then o async/await para resolverla. Y por supuesto, querremos que el usuario copie el texto cuando este dispare un evento, que t铆picamente ser谩 un clic en alg煤n bot贸n que le indique que va a realizar la copia. As铆 que todo junto ser铆a algo as铆:

 document.getElementById("copyButton").addEventListener("click", async () => {
       const copiedText = document.getElementById("textToCopy").value;
      await navigator.clipboard.writeText(copiedText );
});

De esta manera habremos guardado en el portapapeles el texto.

Si quisi茅ramos utilizar un bot贸n de pegar ser铆a muy parecido, pero usar铆amos navigator.clipboard.readText(); para leer del portapapeles y pegarlo:

document.getElementById("pasteButton").addEventListener("click", async () => {
          const text = await navigator.clipboard.readText();
          document.getElementById("outputText").value = text;
          document.getElementById("statusMessage").textContent = "Texto pegado desde el portapapeles.";
       
      });

Aqu铆 el ejemplo de funcionamiento completo, he a帽adido unos try/catch para proporcionar una experiencia mejor en caso de que se produzca un error al escribir o leer en el portapapeles.

See the Pen Untitled by David Boo (@David-Boo) on CodePen.

Conclusi贸n

Si quieres mejorar la experiencia de usuario, puedes ahorrar al usuario el seleccionar un texto y copiarlo, a帽adiendo un bot贸n y que con un clic copie el texto al portapapeles usando JavaScript.

Espero que este art铆culo te haya sido 煤til y que puedas implementar esto en alguno de tus desarrollos web.

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *

脥ndice