--- title: Eventos y el DOM slug: Referencia_DOM_de_Gecko/Eventos tags: - DOM - Guía translation_of: Web/API/Document_Object_Model/Events ---

Introducción

Este capítulo describe el Modelo de Eventos del DOM. Se describe la interfaz Event, así como las interfaces para el registro de eventos en los nodos del DOM, y los oyentes de eventos, y varios ejemplos más largos muestran cómo se relacionan entre sí las diversas interfaces de eventos.

Hay un diagrama excelente que explica claramente las tres fases del flujo de eventos a través del DOM en el borrador DOM Level 3 Events.

Vea también el Ejemplo 5: Propagación de eventos en el capítulo de Ejemplos para un ejemplo más detallado de cómo los eventos se mueven a través del DOM.

Registrando oyentes de eventos

Hay 3 formas de registrar gestores de eventos para un elemento DOM.

EventTarget.addEventListener

// Se supone que myButton es un elemento de botón
myButton.addEventListener('click', function(){alert('Hello world');}, false);

Este es el método que debe usar en las páginas web modernas. 

Nota: Internet Explorer 6-8 no admite este método, ofreciendo una API similar {{domxref("EventTarget.attachEvent")}} en su lugar. Para la compatibilidad entre navegadores utilice una de las muchas bibliotecas de JavaScript disponibles.

Se pueden encontrar más detalles en la página de referencia {{domxref("EventTarget.addEventListener")}}.

Atributo HTML

<button onclick="alert('Hello world!')">

El código de JavaScript en el atributo pasa el objeto Event por medio del parámetro event. El valor de retorno se trata de una manera especial, descrita en la especificación HTML.

Debe evitarse esta forma. Hace que el marcado sea más grande y menos legible. El comitido del contenido/estructura y del comportamiento no están bien separadas, por lo que es más difícil encontrar un error.

Propiedades del elemento DOM

// Se supone que myButton es un elemento de botón
myButton.onclick = function(event){alert('Hello world');};

La función se puede defirnir para que tome un parámetro event. El valor de retorno se trata de una manera especial, descrita en la especificación HTML.

El problema con este método es que solo se puede establecer un gestor por elemento y por evento.

Accediendo a las Interfaces de eventos

Los controladores de eventos se pueden adjuntar a varios objetos, incluidos los elementos DOM, documentos, al objeto window, etc. Cuando se produce un evento, se crea un objeto de evento y se pasa secuencialmente a los oyentes del evento.

Se puede acceder a la interfaz {{domxref ("Evento")}} desde la función del gestor, a través del objeto de evento pasado como primer argumento. El siguiente ejemplo simple muestra cómo se pasa un objeto de evento a la función del controlador de eventos, y se puede usar desde dentro de una de esas funciones.

function foo(evt) {
  // al parámetro evt se le asigna automáticamente el objeto event
  alert(evt);
}
table_el.onclick = foo;