Il dépend de la façon dont les événements sont attachés. Pour illustration présumer nous avons la suite cliquez sur gestionnaire de:
var handler = function() { alert('clicked!') };
Nous allons nous attacher à notre élément à l'aide de différentes méthodes, dont certaines permettent d'inspection et d'autres qui ne le sont pas.
La méthode A) seul gestionnaire d'événements
element.onclick = handler;
// inspect
alert(element.onclick); // alerts "function() { alert('clicked!') }"
Méthode B) plusieurs gestionnaires d'événements
if(element.addEventListener) { // DOM standard
element.addEventListener('click', handler, false)
} else if(element.attachEvent) { // IE
element.attachEvent('onclick', handler)
}
// cannot inspect element to find handlers
La méthode C): jQuery
$(element).click(handler);
-
1.3.x
// inspect
var clickEvents = $(element).data("events").click;
jQuery.each(clickEvents, function(key, value) {
alert(value) // alerts "function() { alert('clicked!') }"
})
-
1.4.x (magasins le gestionnaire à l'intérieur d'un objet)
// inspect
var clickEvents = $(element).data("events").click;
jQuery.each(clickEvents, function(key, handlerObj) {
alert(handlerObj.handler) // alerts "function() { alert('clicked!') }"
// also available: handlerObj.type, handlerObj.namespace
})
(Voir jQuery.fn.data
et jQuery.data
)
La méthode D): Prototype (en désordre)
$(element).observe('click', handler);
-
1.5.x
// inspect
Event.observers.each(function(item) {
if(item[0] == element) {
alert(item[2]) // alerts "function() { alert('clicked!') }"
}
})
-
1.6 1.6.0.3, inclusive (a été très difficile ici)
// inspect. "_eventId" is for < 1.6.0.3 while
// "_prototypeEventID" was introduced in 1.6.0.3
var clickEvents = Event.cache[element._eventId || (element._prototypeEventID || [])[0]].click;
clickEvents.each(function(wrapper){
alert(wrapper.handler) // alerts "function() { alert('clicked!') }"
})
-
1.6.1 (peu mieux faire)
// inspect
var clickEvents = element.getStorage().get('prototype_event_registry').get('click');
clickEvents.each(function(wrapper){
alert(wrapper.handler) // alerts "function() { alert('clicked!') }"
})