Pregunta

Estoy buscando una respuesta actualizada a esta pregunta .

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

Sé que Firebug tiene un '' descanso en el próximo '' botón, pero hay varios oyentes de mouse en el elemento del cuerpo que se ejecutan antes de que pueda obtener el comportamiento que quiero en otro elemento en particular, entonces, ¿hay alguna otra forma?

¿Fue útil?

Solución

He actualizado la respuesta ha vinculado a con una cobertura de Prototype más completa que representa los cambios en las versiones 1.6.0 a 1.6.1 .

Se puso muy desordenado entre ellos, pero 1.6.1 está algo limpio:

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!') }"
})

Otros consejos

Las cosas ahora se enrutan a través del elemento de almacenamiento:)

Element.getStorage (yourElement) .get ('prototype_event_registry') le dará una instancia del Hash de Prototype, para que pueda hacer cualquier cosa que 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ían modificarse en el futuro, por lo que no confiaría en ellos excepto, tal vez, para propósitos de depuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top