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.