Simular un clic en JavaScript: click() y dispatchEvent()

Publicado 2 min de lectura Revisado
Ver imagen del artículo
Mano con dos anillos sobre un ratón de ordenador, junto a un teclado

Un cliente necesitaba que pulsar un enlace activara una pestaña de la interfaz. La solución fue despachar un evento hacia el elemento de destino. Pero hay una corrección importante respecto a mi explicación original: JavaScript no puede fabricar un clic humano de confianza.

Click / evento sintético. Una llamada de JavaScript no es una acción física
Diagrama explicativo creado para esta entrada; no es una captura de producto.

Disparar el comportamiento de un elemento

Si quieres activar el clic de un botón, normalmente basta con:

const objetivo = document.getElementById('miObjetivo');
objetivo?.click();

Si necesitas configurar el evento, puedes construirlo explícitamente:

const objetivo = document.getElementById('miObjetivo');
if (objetivo) {
  const evento = new MouseEvent('click', {
    view: window,
    bubbles: true,
    cancelable: true
  });
  const noCancelado = objetivo.dispatchEvent(evento);
  console.log(noCancelado);
}

dispatchEvent() devuelve false si un manejador cancela un evento cancelable mediante preventDefault(). No te dice si la pestaña terminó abierta ni si una operación asíncrona finalizó.

Lo que no consigue

El evento sintético tiene isTrusted === false. No sustituye la activación del usuario requerida para ciertas APIs del navegador. Tampoco basta con cambiar su nombre a «user-click» ni con usar jQuery.

Si la biblioteca de pestañas ofrece una API pública para activarlas, usaría esa API: expresa mejor la intención y evita depender de un clic artificial. Para un formulario, también hay que distinguir activar un botón de enviar el formulario y validar sus campos.

Referencia: Event.isTrusted.

Compartir esta entrada WhatsApp X / Twitter LinkedIn Reddit Telegram Bluesky Email
Siguiente comando: volver al archivo o pulsa Ctrl + K
Hilo abierto

La conversación empieza aquí

Escribir un comentario

Nadie ha escrito todavía. Si lo has probado en tu máquina, cuenta qué te salió: otra versión u otro resultado también ayudan.

Escribe tu comentario

Si planteas un problema técnico, di sistema, versión, qué esperabas y qué has probado. Respeto y cero spam: tu correo no se publica.

0 caracteresCtrl + Enter para enviar

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.