Generalmente, cuando ocurre un evento debido a una acción del usuario, se dispara un evento de navegador. Son eventos nativos específicos que realizan una cierta tarea y donde su objeto de evento tiene propiedades o métodos especiales para dicha tarea.
Tipos de eventos
Normalmente, el evento que se dispara es de tipo Event, sin embargo, existe una amplia lista de eventos más específicos. Existen muchos y muy variados.
Veamos una lista de algunos de los eventos de navegador disponibles (no están todos):
| Tipo de evento | Evento relacionado con... | |
|---|---|---|
| Animaciones | ||
AnimationEvent | Información general de animaciones CSS. | |
AnimationPlaybackEvent | Estado de reproducción de la animación CSS. | |
TransitionEvent | Información de estado de la transición CSS. | |
| Interfaz de usuario | ||
KeyboardEvent | Interacciones con teclas de teclado como keydown, keyup o keypress. | |
MouseEvent | Interacciones con dispositivo apuntador (ratón) como click, dblclick, mousedown, mouseup. | |
PointerEvent | Interacciones con dispositivo apuntador como pointerdown, pointerup... Acepta los de mouse. | |
TouchEvent | Interacciones con dispositivos con superficie táctil como touchstart, touchend, etc... | |
WheelEvent | Interacciones con la rueda de ratón o elemento similar como wheel. | |
| Carga de página | ||
BeforeUnloadEvent | El instante justo antes de cerrar una pestaña o ventana del navegador como unload. | |
| Portapapeles | ||
ClipboardEvent | Modificación del portapapeles con eventos como cut, copy o paste. | |
| Eventos de giroscopio | ||
DeviceMotionEvent | Cambios en la posición o aceleración del giroscopio con devicemotion. | |
DeviceOrientationEvent | Cambios en la orientación del dispositivo con deviceorientation. | |
| Eventos de Drag and Drop | ||
DragEvent | Acciones Drag and Drop del usuario mediante drag, drop, dragstart, dragend... | |
| Formularios | ||
FocusEvent | Interacciones con el foco de un elemento con focus, blur, focusin y focusout. | |
InputEvent | Interacción al introducir texto en un elemento con input. | |
FormDataEvent | Envío de datos de formulario mediante formdata. | |
SubmitEvent | Envío de un formulario a través de un botón con submit. | |
| Tipografías | ||
FontFaceSetLoadEvent | Carga de tipografías mediante loading, loadingdone o loadingerror. | |
| Gamepad API | ||
GamepadAxisEvent | Interacción con la cruceta de un joystick o gamepad. Experimental. | |
GamepadButtonEvent | Interacción con los botones de un gamepad. Experimental. | |
GamepadEvent | Interacción al conectar un gamepad con gamepadconnected o gamepaddisconnected. | |
| Eventos de URL | ||
HashChangeEvent | Modificación o cambio del anchor de una URL mediante hashchange. | |
NavigateEvent | Interacción que interfiere con el historial de navegación mediante navigate. | |
PopStateEvent | Interacción con una entrada del historial de navegación mediante popstate. | |
| Eventos de Mensajería | ||
MessageEvent | Envío de mensaje a través de WebSocket, SSE, iframes, workers, WebRTC, etc... | |
CloseEvent | Cierre de evento de WebSocket. | |
| Pagos a través de navegador | ||
PaymentMethodChangeEvent | Cambio del método de pago a través de la API de pagos del navegador. | |
PaymentRequestUpdateEvent | Se ha modificado algún detalle del diálogo de pago del navegador. | |
| PictureInPicture | ||
PictureInPictureEvent | Sistema de Picture-in-picture como enterpictureinpicture o resize. | |
| Eventos de voz | ||
SpeechRecognitionEvent | Interacción con el sistema de reconocimiento de voz mediante result o nomatch. | |
SpeechSynthesisErrorEvent | Errores en la interacción creando un mensaje con el sintetizador de voz. | |
SpeechSynthesisEvent | Interacción con el sintetizador de voz con pause, boundary, etc... | |
| Eventos personalizados | ||
CustomEvent | Creación de eventos personalizados que explicamos detalladamente en Ver Custom Events | |
Recuerda que esto es sólo una pequeña lista de todos los eventos de navegador que existen.
Ejemplo: PointerEvent
Vamos a realizar un ejemplo con el evento click. Nuestro código nos permitirá hacer click con el ratón en cualquier parte de la pantalla. Nos mostrará los siguientes datos:
- El número de veces consecutivas que hemos hecho click:
event.detail - Las coordenadas de X donde has hecho click en la pantalla:
event.x - Las coordenadas de Y donde has hecho click en la pantalla:
event.y
const span = document.body.querySelector("span");
document.body.addEventListener("click", (event) => {
const { x, y, detail } = event;
span.textContent = `Has hecho ${detail} CLICK en las coordenadas (${x}x${y})`;
});
body {
margin: 0;
width: 100vw;
height: 100vh;
background: lightgrey;
user-select: none;
font-size: 2rem;
}
<span>Haz click en una parte de la página</span>
En la función action realizamos una desestructuración para simplificar el código y modificamos el contenido de texto del elemento <span> cada vez que hacemos click.
