Datos del portapapeles de JavaScript

Shraddha Paghdar 20 junio 2023
Datos del portapapeles de JavaScript

La publicación de hoy enseñará cómo detectar datos del portapapeles en eventos de pegar en JavaScript.

Datos del portapapeles de JavaScript

El evento “pegar” se genera cuando el usuario inicia una acción de “pegar” a través de la interfaz de usuario del navegador.

Cuando el cursor está en un contexto editable, la acción predeterminada es pegar el contenido del portapapeles en el documento en la posición del cursor. Un controlador para este evento puede acceder al contenido del portapapeles llamando a getData() en la propiedad clipboardData del evento.

Un controlador de eventos debe cancelar la acción predeterminada con event.preventDefault() e insertar manualmente los datos deseados para anular el comportamiento predeterminado. Es posible crear y enviar un evento de inserción sintética, pero esto no afecta el contenido del documento.

El método addEventListener() de la interfaz EventTarget configura una función que se llamará cada vez que el evento especificado se entregue al objetivo.

Tomemos un ejemplo, definamos dos elementos div. Uno con el origen y otro con el destino.

Source Div contendrá los datos desde los que se copiarán, y el destino será donde pegar los datos copiados.

<div class="source">Hello World!</div>
<div class="destination" contenteditable="true">...Good Bye!</div>
const destinationElement = document.querySelector('div.destination');

destinationElement.addEventListener('paste', (event) => {
  const paste = (event.clipboardData || window.clipboardData).getData('text');
  console.log(paste);

  const selection = window.getSelection();
  selection.deleteFromDocument();
  selection.getRangeAt(0).insertNode(document.createTextNode(paste));
  event.preventDefault();
});

En el ejemplo anterior, primero seleccionamos el elemento de destino usando el querySelector. Una vez seleccionado el elemento, escuchamos el evento pegar.

Tan pronto como el usuario pega los datos, los datos del portapapeles se extraen del evento.

El contenido original se elimina del elemento de destino y el contenido nuevo se inserta en el elemento de destino. Intente ejecutar el código anterior en cualquier navegador que admita el evento pegar; obtendrá el siguiente resultado.

Antes:

antes del evento de pegado

Después:

después del evento de pegado

Demostración aquí

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn