Eventos
Eventos Fundamental
Section titled “Eventos ”Eventos básicos Básico
Section titled “Eventos básicos ”Eventos del mouse
Section titled “Eventos del mouse”const boton = document.querySelector('#miBoton');
// Clickboton.addEventListener('click', () => { console.log('Botón clickeado');});
// Doble clickboton.addEventListener('dblclick', () => { console.log('Doble click');});
// Hoverboton.addEventListener('mouseenter', () => { console.log('Mouse entró');});
boton.addEventListener('mouseleave', () => { console.log('Mouse salió');});Eventos del teclado
Section titled “Eventos del teclado”const input = document.querySelector('#miInput');
// Tecla presionadainput.addEventListener('keydown', (evento) => { console.log(`Tecla presionada: ${evento.key}`);});
// Tecla liberadainput.addEventListener('keyup', (evento) => { console.log(`Tecla liberada: ${evento.key}`);});
// Entrada de textoinput.addEventListener('input', (evento) => { console.log(`Valor actual: ${evento.target.value}`);});El objeto Event Importante
Section titled “El objeto Event ”Propiedades principales
Section titled “Propiedades principales”document.addEventListener('click', (evento) => { // Tipo de evento console.log(evento.type); // 'click'
// Elemento que disparó el evento console.log(evento.target);
// Coordenadas del mouse console.log(evento.clientX, evento.clientY);
// Teclas presionadas console.log(evento.ctrlKey, evento.shiftKey);});Prevenir comportamiento por defecto
Section titled “Prevenir comportamiento por defecto”const form = document.querySelector('form');
form.addEventListener('submit', (evento) => { // Prevenir envío del formulario evento.preventDefault();
// Código de validación aquí});
const enlace = document.querySelector('a');enlace.addEventListener('click', (evento) => { // Prevenir navegación evento.preventDefault();});Propagación de eventos Avanzado
Section titled “Propagación de eventos ”Burbujeo y captura
Section titled “Burbujeo y captura”// Burbujeo (por defecto)elemento.addEventListener('click', (evento) => { console.log('Fase de burbujeo');});
// Capturaelemento.addEventListener('click', (evento) => { console.log('Fase de captura');}, true);
// Detener propagaciónelemento.addEventListener('click', (evento) => { evento.stopPropagation(); console.log('Este evento no se propagará');});Delegación de eventos
Section titled “Delegación de eventos”const lista = document.querySelector('#lista');
lista.addEventListener('click', (evento) => { if (evento.target.matches('li')) { console.log('Click en elemento li:', evento.target.textContent); }});Eventos personalizados Avanzado
Section titled “Eventos personalizados ”Crear y disparar eventos
Section titled “Crear y disparar eventos”// Crear evento personalizadoconst eventoPersonalizado = new CustomEvent('miEvento', { detail: { mensaje: 'Hola desde evento personalizado' }});
// Escuchar evento personalizadoelemento.addEventListener('miEvento', (evento) => { console.log(evento.detail.mensaje);});
// Disparar eventoelemento.dispatchEvent(eventoPersonalizado);Eventos comunes Referencia
Section titled “Eventos comunes ”Eventos del documento
Section titled “Eventos del documento”// DOM cargadodocument.addEventListener('DOMContentLoaded', () => { console.log('DOM está listo');});
// Página completamente cargadawindow.addEventListener('load', () => { console.log('Página completamente cargada');});
// Antes de cerrar la páginawindow.addEventListener('beforeunload', (evento) => { evento.preventDefault(); evento.returnValue = '';});Eventos de formulario
Section titled “Eventos de formulario”const form = document.querySelector('form');const input = document.querySelector('input');
// Envío de formularioform.addEventListener('submit', (evento) => { evento.preventDefault(); console.log('Formulario enviado');});
// Cambio en inputinput.addEventListener('change', () => { console.log('Valor cambiado');});
// Durante la escriturainput.addEventListener('input', () => { console.log('Escribiendo...');});Mejores prácticas Recomendado
Section titled “Mejores prácticas ”Usar delegación de eventos
Section titled “Usar delegación de eventos”// ❌ Malodocument.querySelectorAll('button').forEach(button => { button.addEventListener('click', handleClick);});
// ✅ Buenodocument.addEventListener('click', (evento) => { if (evento.target.matches('button')) { handleClick(evento); }});Remover event listeners cuando no se necesiten
Section titled “Remover event listeners cuando no se necesiten”const handleClick = () => console.log('Click');
// Agregar eventoelemento.addEventListener('click', handleClick);
// Remover cuando ya no se necesiteelemento.removeEventListener('click', handleClick);Usar opciones de addEventListener
Section titled “Usar opciones de addEventListener”elemento.addEventListener('click', handleClick, { once: true, // Se ejecuta solo una vez passive: true, // Mejora el rendimiento del scroll capture: false // Fase de burbujeo (default)});
🐝