Uso del patrón de diseño Card con HTML y CSS adaptable.
En JavaScript un evento es cualquier acción que ocurre en la página, como hacer clic en un botón, mover el ratón o presionar una tecla.
Los eventos permiten ejecutar código en respuesta a estas acciones, lo que hace más dinámicas a las páginas web. Para trabajar con eventos, es común usar el método addEventListener
o atributos en el código HTML.
El método más simple (aunque menos recomendado) es definir los eventos directamente en el HTML:
<button onclick="alert('Hola')">Haz clic</button>
Este enfoque funciona, pero no es escalable ni reutilizable.
Otra forma es asignar la función directamente a la propiedad del evento en el elemento:
const btn = document.querySelector("button");btn.onclick = function () { alert("Hola desde JavaScript");};
El problema con este método es que sobrescribe cualquier otra función asignada al mismo evento.
addEventListener
(la opción recomendada)addEventListener
permite agregar múltiples eventos sin sobrescribir los existentes:
const btn = document.querySelector("button");btn.addEventListener("click", () => { alert("Evento con addEventListener");});
Además, facilita la eliminación de eventos si es necesario:
const handler = () => alert("Este evento será eliminado");btn.addEventListener("click", handler);
// Eliminar el evento después de 5 segundossetTimeout(() => btn.removeEventListener("click", handler), 5000);
A veces, los elementos son generados dinámicamente o hay muchos elementos similares. En estos casos, en lugar de asignar eventos individualmente, se pueden gestionar a través de un elemento padre:
document.body.addEventListener("click", (event) => { if (event.target.matches(".dinamico")) { alert("Elemento dinámico clicado"); }});
Esto evita asignar eventos a cada elemento nuevo.
Algunos eventos tienen comportamientos predeterminados que pueden ser innecesarios. Se pueden deshabilitar con preventDefault()
:
document.querySelector("a").addEventListener("click", (event) => { event.preventDefault(); // Evita que el enlace navegue alert("Navegación bloqueada");});
A continuación mostramos la mayoría de eventos que puedes usar:
click
→ Cuando se hace clic en un elementodblclick
→ Doble clic en un elementomousedown
/ mouseup
→ Cuando se presiona / suelta un botón del mousemousemove
→ Cuando el mouse se mueve sobre un elementomouseover
/ mouseout
→ Cuando el mouse entra o sale de un elementomouseenter
/ mouseleave
→ Similar a mouseover
/ mouseout
, pero sin propagacióncontextmenu
→ Cuando se abre el menú contextual (clic derecho)keydown
→ Cuando se presiona una teclakeyup
→ Cuando se suelta una teclakeypress
→ Obsoleto, pero usado en versiones antiguas para capturar teclas presionadassubmit
→ Cuando se envía un formulariochange
→ Cuando cambia el valor de un input, select o textareainput
→ Cuando el usuario escribe en un input o textareafocus
/ blur
→ Cuando un elemento recibe o pierde el focoreset
→ Cuando se restablece un formularioload
→ Cuando una página o recurso ha cargado completamenteDOMContentLoaded
→ Cuando el HTML ha sido completamente cargado y parseadobeforeunload
→ Antes de que la página se cierreunload
→ Cuando la página se descargaerror
→ Cuando ocurre un error en la carga de un recursoresize
→ Cuando se cambia el tamaño de la ventanascroll
→ Cuando se desplaza la páginavisibilitychange
→ Cuando la pestaña cambia de estado (visible/oculta)copy
→ Cuando se copia contenidocut
→ Cuando se corta contenidopaste
→ Cuando se pega contenidodragstart
→ Cuando se comienza a arrastrar un elementodrag
→ Durante el arrastredragenter
→ Cuando el elemento arrastrado entra en una zona de destinodragover
→ Cuando el elemento arrastrado está sobre una zona de destinodragleave
→ Cuando el elemento arrastrado sale de una zona de destinodrop
→ Cuando el elemento se suelta en la zona de destinodragend
→ Cuando se finaliza el arrastretouchstart
→ Cuando se toca la pantallatouchmove
→ Cuando se mueve el dedo sobre la pantallatouchend
→ Cuando se levanta el dedo de la pantallaLa gestión de eventos en JavaScript permite hacer la web más interactiva. Usar addEventListener
, la delegación de eventos y preventDefault()
mejora el control sobre las interacciones.