
En el modelo de registro de eventos en línea, el evento es añadido como un atributo más a la etiqueta HTML, como por ejemplo:
<a href="pagina.html" onClick="alert('Has pulsado en el enlace')">Pulsa aqui</a>
Cuando hacemos click en el enlace, se llama al gestor de eventos onClick
(al hacer click) y se ejecuta el script; que contiene en este caso una alerta de JavaScript. También se podría realizar lo mismo pero llamando a una función:
const alertar = () => { alert("Has pulsado en el enlace"); } ... <a href="pagina.html" onClick="alertar()">Pulsa aqui</a>
No uses el modelo de registro de eventos en línea
Este modelo no se recomienda, y aunque lo has visto en ejemplos que hemos utilizado hasta ahora, tiene el problema de que estamos mezclando la estructura de la página web con la programación de la misma, y lo que se intenta hoy en día es separar la programación en JavaScript, de la estructura HTML, por lo que este modelo no nos sirve.
En el ejemplo anterior, cuando haces click en el enlace se mostrará la alerta y a continuación te conectará con la pagina.html
. En ese momento desaparecerán de memoria los objetos que estaban en un principio, cuando se programó el evento. Ésto puede ser un problema, ya que si por ejemplo la función a la que llamamos, cuando se produce el evento, tiene que realizar varias tareas, éstas tendrían que ser hechas antes de que nos conecte con la nueva página.
Éste modo de funcionamiento ha sido un principio muy importante en la gestión de eventos. Si un evento genera la ejecución de un script y además también se genera la acción por defecto para ese objeto entonces:
- El script se ejecutará primero.
- La acción por defecto se ejecutará después.
Evitar la acción por defecto
A veces es interesante el bloquear o evitar que se ejecute la acción por defecto. Por ejemplo, en nuestro caso anterior podríamos evitar que nos conecte con la nueva pagina.html
. Cuando programamos un gestor de eventos, ese gestor podrá devolver un valor booleano true
o false
. Eso tendremos que programarlo con la instrucción return true|false
. False quiere decir "no ejecutes la acción por defecto". Por lo tanto nuestro ejemplo quedará del siguiente modo:
<a href="pagina.html" onClick="alertar(); return false">Pulsa aqui</a>
De esa forma, cada vez que pulsemos en el enlace realizará la llamada a la función alertar()
y cuando termine ejecutará la instrucción "return false
", que le indicará al navegador que no ejecute la acción por defecto asignada a ese objeto (en este caso la acción por defecto de un hiperenlace es conectarnos con la página href
de destino).
También se puede utilizar el método preventDefault()
del evento para lo mismo.