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