Documentación del artículo de MDN "Introducción a los eventos": qué es un evento,
cómo registrarlo con addEventListener(), los objetos evento, cómo evitar el
comportamiento por defecto con preventDefault() y por qué NO usar manejadores
inline. Incluye demos interactivas reproducibles.
Un evento es una señal que lanza el navegador cuando ocurre algo (clic, tecla, submit…). Le asocias un detector y una función manejadora responde. Pruébalo:
const btn = document.querySelector("button");
btn.addEventListener("click", () => {
document.body.style.backgroundColor =
`rgb(${random(255)} ${random(255)} ${random(255)})`;
});
"click", "mouseover", "keydown"…) y la función manejadora.removeEventListener().function changeBackground() { /* ... */ }
btn.addEventListener("click", changeBackground);
// varios:
myElement.addEventListener("click", functionA);
myElement.addEventListener("click", functionB);
// eliminar:
btn.removeEventListener("click", changeBackground);
focus/blur (validar formularios), dblclick,
mouseover/mouseout. Algunos son específicos: play solo en <video>/<audio>.
btn.onclick = () => { /* ... */ };
// Desventaja: solo UN manejador (se sobrescribe)
<button onclick="bgChange()">Haz clic</button>
addEventListener(). Para N botones:
document.querySelectorAll("button").forEach(b => b.addEventListener("click", bgChange));
La función manejadora recibe un parámetro (e, event, evt).
e.target = elemento sobre el que ocurrió el evento. KeyboardEvent.key = tecla presionada.
const textBox = document.querySelector("#textBox");
const output = document.querySelector("#output");
textBox.addEventListener("keydown", (event) => {
output.textContent = `Presionaste "${event.key}".`;
});
form.addEventListener("submit", (e) => {
if (fname.value === "" || lname.value === "") {
e.preventDefault(); // detiene el envío
para.textContent = "¡Debes completar ambos nombres!";
}
});
on(),
once()); las WebExtensions usan camelCase (onMessage) + addListener.
El token 🟠 recorre el ciclo: el elemento lanza el evento → el detector lo captura → el manejador responde. Clic reinicia.
| Concepto | Qué es |
|---|---|
| Evento | Señal que lanza el sistema (clic, tecla, submit…) |
| Detector | Código que detecta el evento (ej. addEventListener) |
| Manejador | Función que responde al evento |
| addEventListener() | Mecanismo recomendado; varios manejadores + removeEventListener() |
| onclick (propiedad) | Alternativa; solo un manejador (se sobrescribe) |
| Inline (onclick="...") | Obsoleto, mala práctica — NO usar |
| Objeto evento | Parámetro e con contexto: e.target, event.key |
| preventDefault() | Detiene el comportamiento por defecto (ej. no enviar el form) |
| Event bubbling | Los eventos de elementos anidados "suben" (siguiente lección MDN) |
https://developer.mozilla.org/es/docs/Learn_web_development/Core/Scripting/Events.