From FirebugWiki
Revision as of 16:07, 21 November 2013 by Sebastianz (Talk | contribs) (Added categories)

Jump to: navigation, search

Returns all the event listeners registered for specific target. The target can be either an element, or another DOM object that accepts event listeners (e.g. window or an XMLHttpRequest).

This feature has been introduced in Firebug 1.12.





The event target for which registered listeners are returned.


An example of a web page that registers three listeners:

document.body.addEventListener("click", function onClick1() {}, true);
document.body.addEventListener("click", function onClick2() {}, true);
document.body.addEventListener("mousemove", function onMouseMove1() {}, true);

This is what you execute on the Command Line.


The Console panel result is a simple object containing an array for each event type (e.g. "click" or "mousemove"). The following screenshot shows that there are two click and one mousemove listeners registered on the <body> element.


If you want to see more about registered listeners, click the green object in the Console Panel and you'll be navigated to the DOM Panel. See the next screenshot.


Every item in the arrays describes a particular listener. You can see whether useCapture is set and the name of the function used as the listener handler. If you click the function, you'll be navigated to the Script Panel to see its source code.

But I'm only seeing library wrapper functions?

JavaScript libraries that provide the ability to add event listeners often register their own functions as listeners, to make sure they can handle e.g. return values correctly. For instance, in the following example with prototype.js, f is a Prototype-internal function:

Event.observe(document.body, "click", function() {
f = getEventListeners(document.body).click[0].listener;

Luckily Firebug provides a way to get to the original function, through the Closure Inspector:


The exact name of the variable obviously differs between libraries, and minified versions of them.

jQuery is special here in that it doesn't put the callback into a closure; instead you can use jQuery._data(element, "events").

See also