Domanda

Sto cercando una risposta aggiornata a questa domanda .

Sembra che Event.observers non sia più utilizzato (forse per evitare perdite di memoria) in Prototype 1.6+, quindi come posso rintracciare ora quali listener di eventi sono collegati a un elemento?

So che Firebug ha una "pausa al prossimo" pulsante, ma ci sono diversi listener del mouse sull'elemento body che vengono eseguiti prima che io possa arrivare al comportamento che desidero su un altro elemento particolare, quindi c'è qualche altro modo?

È stato utile?

Soluzione

Ho aggiornato la risposta a cui sei collegato con una copertura di copertura Prototype più completa per le modifiche nelle versioni da 1.6.0 a 1.6.1 .

È diventato molto disordinato tra loro, ma 1.6.1 è piuttosto pulito:

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

Altri suggerimenti

Le cose ora vengono instradate attraverso la memoria Element:)

Element.getStorage (yourElement) .get ('prototype_event_registry') ti darà un'istanza di Hash di Prototype, in modo da poter fare qualsiasi cosa tu faccia con l'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.

Nota che si tratta di dettagli interni non documentati che potrebbero essere modificati in futuro, quindi non farei affidamento su di essi se non per, forse, scopi di debug.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top