~/cuaderno / 2020 / entrada-683.md

Simular un clic con JavaScript: click(), dispatchEvent() e isTrusted

Publicado 25 junio 2020 2 min de lectura Revisado 14 septiembre 2026
Click / evento sintético. Una llamada de JavaScript no es una acción física

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.

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: X / Twitter LinkedIn Reddit Email
Siguiente comando: volver al archivo o pulsa Ctrl + K

0 comentarios

TIP RÁPIDO

Sé concreto, añade contexto (versión, distro, stack) y si puedes pega logs en bloque de código. Menos drama, más señales.

nginx plesk mariadb logs

Deja una respuesta

NormaRespeto, claridad, y cero spam. El email no se publica.

Consejo: usa bloques de código para logs. Ej: ```log ... ```

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