Sobre Nosotros

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Machine Learning Engineering (16 weeks)

Full-Stack Software Developer

Buscar en lecciones

Aprendizaje social y en vivo

La forma más eficiente de aprender: Únete a una cohorte con compañeros, transmisiones en vivo, sesiones improvisadas de codificación, tutorías en vivo con expertos reales y mantenga la motivación.

De cero a que te paguen como desarrollador, aprende las habilidades del presente y del futuro. Impulsa tu carrera profesional y sé contratado por una empresa tecnológica.

Empezar a programar

← Regresar a lecciones
Editar en Github

Programación orientada a eventos

Programación orientada a Eventos

Programación orientada a Eventos

Trabajar con eventos es una forma totalmente nueva de controlar el flujo de una aplicación. Es la primera vez que tu código no se ejecutará en un flujo lineal. En su lugar, se ejecutará de forma asíncrona. ¿Quién sabe qué es lo primero?

En su lugar, tu código ahora se ejecutará asincrónicamente (es decir, algunas partes del código no funcionarán cuando el resto del código circundante se esté ejecutando, pero solo cuando se activan explícitamente). ¿Quién sabe qué viene primero?

¿Qué es un evento?

Un evento es algo que sucede! Como hacer clic en un botón, presionar una tecla en el teclado, pasar un div con el mouse, etc.

Tu trabajo como desarrollador es prepararte para esos eventos y definir las funciones que van a manejar esos eventos.

event driven programming

¿Pero quién desencadena estos eventos?

A veces es el usuario del sitio web, a veces es el navegador, a veces es otra aplicación que le permite saber algo, a veces el desarrollador desencadena eventos relacionados con la lógica empresarial, etc.

Hay docenas de eventos que se activan cada minuto, pero no tienes que hacer nada al respecto (no si no quieres). Están disponibles para usted según el tipo de aplicación que desee hacer.

Tipos de Eventos

Estos son algunos de los tipos de eventos que se activan constantemente (y usted puede escucharlos):

MOUSE – Eventos

Tipo de DatosDescripción
ClicCuando el usuario hace clic con el mouse o el dedo en cualquier elemento HTML.
Mouseover,
Mouseout
El evento ocurre cuando el puntero se mueve hacia dentro (para el mouseover) o hacia afuera (para el mouseout) un elemento, o uno de sus hijos.
contextmenuCuando el usuario hace clic derecho en el mouse.
MousemoveSi el usuario mueve el mouse.
Mousedown or MouseupSi el usuario presiona o suelta el mouse.

☝️ Juega con esta demo aquí

Haga clic aquí para abrir la demostración en una nueva ventana.

FRAME – Eventos

Tipo de DatosDescripción
LoadEl navegador ha terminado de cargar el sitio web.
ErrorEl evento ocurre cuando se produce un error al cargar un archivo externo (como un CSS o un JavaScript).
ScrollEl evento se produce cuando la vista del documento o un elemento es deslizado.
PageHide
PageShow
Cuando el usuario se enfoca en una ventana / pestaña diferente; o cuando el usuario vuelve de una ventana / pestaña diferente.
ResizeCuando la ventana se redimensiona.

☝️ Juega con esta demo aquí

Haga clic aquí para abrir la demostración en una nueva ventana.

FORMS – Eventos

Tipo de DatosDescripción
SubmitEl evento ocurre cuando se envía un formulario.
Focusin and FocusoutEl evento ocurre cuando el puntero se mueve a un elemento o a uno de los elementos secundarios del elemento.
InputEl evento ocurre cuando un elemento obtiene la entrada del usuario.
ChangeEl evento ocurre cuando el contenido de un elemento del formulario, la selección o el estado previamente establecido han cambiado (para <input>, <keygen>, <select>, y <textarea>)
 |

☝️ Juega con esta demo aquí

Haga clic aquí para abrir la demostración en una nueva ventana.

TECLADO – Events

Tipo de DatosDescripción
KeyupCuando el usuario suelta la tecla del teclado.
KeydownCuando el usuario presiona la tecla del teclado.
KeypressCuando el usuario presiona y suelta la tecla del teclado. La diferencia de keydown / up es que Keypress solo funciona con teclas de caracteres. Por ejemplo, no funciona en las flechas arriba

☝️Juega con esta demo aquí

Haga clic aquí para abrir la demostración en una nueva ventana.

🔗 Aquí puedes encontrar una lista con todos los otros eventos menos comunes que tiene a su disposición. Léalos rápidamente y sé consciente de ellos para futuras referencias durante tu vida como desarrollador.

Escuchando los Eventos

Ahora que sabes qué eventos hay, puedes comenzar a escucharlos cuando lo desees durante el tiempo de ejecución. La única forma de reaccionar ante cualquier evento es escuchar ese evento y asignar una función que maneje el evento como lo necesite.

Repitamos: Para reaccionar necesitas escuchar… Y para escuchar necesitas especificar una función handler. Llamamos a esa construcción un Event Listener.

events driven programming

Puedes agregar un detector de eventos de 2 maneras diferentes:

Añadiendo Listeners desde el HTML

Por ejemplo, si desea empezar a escuchar cuando el usuario hace clic en un botón en particular todo lo que tiene que hacer es especificar el atributo "onclick" para esa etiqueta HTML específica < button>, así:

1<!– myClickHandler is a javascript function that will handle the event > 2<button onclick="myClickHandler();">Click me</button> 3 4<script> 5function myClickHandler(){ 6 alert(‘hello’); 7} 8</script>
Haz clic aquí para abrir la demostración en una nueva ventana.

Añadiendo Listeners desde JavaScript (durante el tiempo de ejecución)

A veces el elemento DOM no existe desde el principio. Tal vez se crean después de una llamada a la base de datos o después de que el usuario haya hecho algo. Para resolver ese problema, debe comenzar a escuchar después de crear los nuevos elementos.

La función .addEventListener es perfecta para esto porque se puede usar en cualquier elemento DOM durante el tiempo de ejecución.

Al usar la función .addEventListener, debe especificar qué evento quiere escuchar, y la función controladora que se llamará cada vez que ese evento se active en ese elemento DOM.

Por ejemplo, el siguiente código está creando una lista de nombres, y cada LI está escuchando el evento "clic", que luego activa la eliminación del mismo LI:

Haga clic aquí para abrir la demostración en una nueva ventana.

El Objeto del Evento

Las funciones handler de eventos pueden recibir un parámetro opcional en su declaración, que la mayoría de los desarrolladores denominan event, evt o simplemente e. Este parámetro siempre se completa con el "Objeto de evento" que se envía de forma predeterminada desde cada evento y contiene información importante sobre el evento que se activó, el elemento donde ocurrió, su valor, etc.

No importa qué tipo de evento (eventos relacionados con el mouse, evento de teclado, marco, etc.), el objeto de evento siempre tendrá al menos las siguientes propiedades:

1function myEventHandler(eventObj) 2{ 3 console.log(eventObj.target); 4 //imprimirá en la consola del objeto DOM que ha activado el evento 5 console.log(eventObj.type); 6 //Imprimirá en la consola el tipo de evento. 7 console.log(eventObj.cancelable); 8 //Imprimirá en la consola verdadero o falso si podemos detener la propagación de este evento. 9 eventObj.preventDefault(); 10 //Evitará la acción predeterminada del evento si está permitido 11 eventObj.stopPropagation(); 12 //Evitará la propagación del evento si está permitido 13 14}

Cada Objeto de Evento tiene las siguientes Propiedades:

PropiedadesDescripción
ObjetivoDevuelve el objeto DOM que ha activado el evento.
TipoEl tipo de evento: haga clic en, al pasar el ratón, carga, etc .
CancelableSi puede detener la propagación del evento o no.
preventDefault()Si el evento se puede cancelar, este método detiene la acción predeterminada del mismo; por ejemplo, al evitar un evento de "submit" de un formulario, el formulario no se enviará, lo que puede ser útil si el formulario tiene errores que deben corregirse, etc.
stopPropagation()Evita que un evento se propague (es decir, que desencadene el mismo evento en elementos anidados o principales).

Dependiendo del tipo de evento, tendrá propiedades adicionales que le darán información muy útil sobre lo que sucedió cuando se activó el evento.

Una de las propiedades adicionales más importantes es la propiedad target.value de los objetos de evento relacionados con los campos de entrada (input). Nos permite capturar y guardar la entrada del usuario de los elementos de entrada.

Puedes hacerlo pasando el argumento 'event' en la función de controlador de eventos en línea onchange:

1 2<input type="text" onchange="myChangeHandler(event)" /> 3 4<script> 5const myChangeHandler = (e) => { 6 console.log(e.target.value); 7 // Imprimirá en la consola lo que el usuario escriba en el campo de entrada 8} 9</script> 10

O puedes hacerlo con addEventListener:

index.html:

1 <input type="text" />

index.js:

1 //index.js file: 2 const myChangeHandler = (e) => { 3 console.log(e.target.value); 4 } 5 6 document.querySelector("input").addEventListener('change', myChangeHandler); 7

Ten en cuenta que en addEventListener() solo hacemos referencia a la función (myChangeHandler) y no la llamamos (myChangeHandler()). Si la llamas, se ejecutará automáticamente cuando se cargue la página y no esperará a que se gatille/desencadene un evento y ese no es el objetivo. Por lo tanto, no necesitamos pasar el objeto de evento (event object) como argumento allí (no hay paréntesis). AddEventListener pasa automáticamente el objeto de evento a la función que lo controla (handler function).

Información Adicional para ** Eventos del Mouse **

PropiedadesDescripción
clientX, clientYDevuelve la horizontal o vertical de coordenadas del puntero del mouse, con relación a la ventana actual, cuando el evento de mouse fue provocada.
pageX, pageYDevuelve la horizontal o vertical de coordenadas del puntero del mouse, en relación con el documento, cuando el evento del mouse fue provocado.
whichDevuelve qué botón del mouse cuando se presiona el evento de ratón se desencadenó

Información Adicional para Eventos de Teclado

PropiedadesDescripción
keyCodeDevuelve el código de caracteres Unicode de la tecla que activa el evento.
shiftKey, altKey or ctrlKeyDevuelve si el shift,alt o ctrl se pulsan cuando el evento clave fue provocado.

Información adicional para eventos de rueda

PropiedadesDescripción
deltaX, deltaYDevuelve la cantidad de desplazamiento vertical u horizontal de una rueda del ratón ( eje y) o (eje x)
deltaModeDevuelve un número que representa la unidad de mediciones de valores delta (píxeles, líneas o páginas)

🔗 Hay mucha más información que puedes obtener del objeto de evento, pero nos estamos enfocando en las propiedades más utilizadas. Para una lista más grande de propiedades por favor lee esta guía.

Eliminar los Listeners (receptores)

¿Qué pasa si no quiero seguir escuchando? Todos los navegadores modernos eliminan los oyentes de eventos cuando se elimina el elemento DOM en el que se aplicaron. Pero si no deseas eliminar el elemento DOM, puedes eliminar el oyente de forma manual utilizando la función .removeEventListener().

1element.removeEventListener(type, eventHandlerFunction);

Tienes que utilizar los mismos parámetros exactos en la función removeEventListener de que los que utilizan en la función addEventListener.

He aquí un ejemplo:

En este código, se añade un detector de eventos para el evento clic, pero luego, la primera vez que el detector de clic se llama a la función de controlador, elimina el detector de eventos desde el botón. Es por eso que la segunda vez que se hace clic en el botón, no pasa nada.

Haga clic aquí para abrir la demo en una nueva ventana.