Este error generalmente surge cuando se trata de acceder al objeto event
en un controlador de eventos sin pasar explícitamente el objeto event
como argumento a la función.
document.getElementById("myButton").addEventListener("click", function() {
console.log(event);
});
En el ejemplo anterior, se intenta acceder al objeto event
directamente dentro de la función anónima, pero no está definido en ese contexto.
Para evitar este error, asegúrate de pasar el objeto event
a la función de controlador de eventos. Aquí hay algunas formas de solucionar el problema:
event
como argumento
Modifica la función de controlador para aceptar event
como un argumento.
document.getElementById("myButton").addEventListener("click", function(event) {
console.log(event);
});
Define una función nombrada que acepte event
y luego pasa esa función como el controlador de eventos.
function handleClick(event) {
console.log(event);
}
document.getElementById("myButton").addEventListener("click", handleClick);
Si prefieres las funciones de flecha, asegúrate de incluir event
como parámetro.
document.getElementById("myButton").addEventListener("click", (event) => {
console.log(event);
});
Si necesitas compatibilidad con versiones antiguas de Internet Explorer (antes de IE9), el objeto event
puede ser accesible globalmente dentro de la función. Sin embargo, es mejor seguir las prácticas modernas y pasar siempre event
como argumento para evitar inconsistencias entre diferentes navegadores.
Jorge García
Fullstack developer