--- title: Eventos y el DOM slug: Referencia_DOM_de_Gecko/Eventos tags: - DOM - Guía translation_of: Web/API/Document_Object_Model/Events ---
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.
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")}}.
<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.
// 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.
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;