2009-09-14 15 views
6

Estoy buscando una respuesta actualizada al this question.Actualización: ¿Cómo encontrar detectores de eventos en un nodo DOM en prototipo?

Parece que Event.observers ya no se usa (tal vez para evitar fugas de memoria) en Prototype 1.6+, así que ¿cómo puedo rastrear ahora qué eventos oyentes están conectados a un elemento?

Sé que Firebug tiene un botón "romper en el siguiente", pero hay varios oyentes de ratón en el elemento del cuerpo que se ejecutan antes de que pueda obtener el comportamiento que quiero sobre otro elemento en particular, ¿hay alguna otra manera?

Respuesta

7

He actualizado la respuesta you linked to con la cobertura más completa Prototype contabilizando los cambios en las versiones 1.6.0 a 1.6.1.

que estaba muy desordenado en el medio hay, pero es algo limpio 1.6.1:

var handler = function() { alert('clicked!') }; 
$(element).observe('click', handler); 

// inspect 
var clickEvents = element.getStorage().get('prototype_event_registry').get('click'); 
clickEvents.each(function(wrapper){ 
    alert(wrapper.handler) // alerts "function() { alert('clicked!') }" 
}) 
+0

¡Gracias por actualizar la otra respuesta, también! Estoy seguro de que ayudará a otros que lo encontraron como lo hice a través de Google. –

6

Las cosas están ahora encaminan a través del elemento de almacenamiento:)

Element.getStorage(yourElement).get('prototype_event_registry') le dará una instancia de Prototipo de Hash, por lo que pueden hacer cualquier cosa que lo haría con hash.

// to see which event types are being observed 
Element.getStorage(yourElement).get('prototype_event_registry').keys(); 

// to get array of handlers for particular event type 
Element.getStorage(yourElement).get('prototype_event_registry').get('click'); 

// to get array of all handlers 
Element.getStorage(yourElement).get('prototype_event_registry').values(); 

// etc. 

Tenga en cuenta que estos son detalles internos indocumentados que podría cambiar en el futuro, así que no podría basarse en ellos a excepción de, quizás, con fines de depuración.

+0

+1 Thx, kangax. Aunque fuiste el primero, Crescentfish dio una respuesta más completa con la versión 1.6.0.X que necesitaba. –

Cuestiones relacionadas