← Back to Features
Pro

Event Listeners

Event Listeners outlines every element that has an event listener, coloured by kind — click, hover, scroll, touch, keyboard and form — shows where each handler came from, and flashes elements as the DOM changes.

Working out why something reacts — or does not — usually starts with a question the page will not answer: is there a click handler on this element at all? Which element actually owns the hover behaviour? What is listening to scroll and making the page stutter? Browser DevTools can list the listeners of one element at a time, if you already know which element to select.

This tool answers the question for the whole page at once. Every element with a listener gets an outline in the colour of its kind — click, hover, scroll, touch and drag, keyboard, or form and focus — and hovering one shows the exact events and where each came from: an inline attribute, an on-property, a React or Vue handler, jQuery, or addEventListener. Category tiles switch each kind on and off, and the list underneath names every element, so one click scrolls you to it.

Frameworks are handled properly. React attaches its listeners to the root and dispatches events internally, which would make the whole app look clickable; the tool sets those root registrations aside and shows the React handlers on the elements that declare them. The quick scan needs no reload and covers inline handlers, React, Vue and jQuery. Listeners added with plain addEventListener before the tool opened can only be seen from the start of a page load, so Reload & record reloads the page once with recording on — the tool then reopens by itself with every listener included, page-level ones on window and document too.

The second tab watches the DOM itself. Every added or removed node, attribute change and text change flashes on the page, the counters show mutations per second, and a list ranks the elements that change most, with the attributes involved. A steady stream while nobody touches the page usually means a timer, a JavaScript-driven animation or a framework re-rendering more than it should — exactly the things that drain batteries and make pages stutter.

Live Preview
store.example.com
Acme Menu ▾
Buy now
Reviews
★★★★★ …
button.buy-now
● click React
● mouseenter addEventListener
Event Listeners
14 elements with listeners · recorded since the page loaded
Event listeners DOM mutations
6
● Click
4
● Hover
2
● Scroll
1
● Keyboard
button.buy-now
click React mouseenter listener
nav .menu-toggle
mouseenter jQuery click jQuery
section.reviews
scroll listener
input#search
keydown Vue input Vue
Key Features

Every Listener, Outlined

Elements with click, hover, scroll, touch, keyboard and form listeners are outlined in their own colour, with tiles to show or hide each kind.

Where Each Handler Comes From

Inline attributes, on-properties, React and Vue handlers, jQuery events and addEventListener calls, labelled on every element.

React Delegation Handled

React's root-level listeners are set aside, and its handlers are shown on the elements that declare them rather than on the whole app.

Record From Page Load

Reload & record catches every addEventListener call from the start of a page load, including window and document listeners, for that one load only.

Live DOM Mutations

Added and removed nodes, attribute changes and text changes flash on the page, with a mutations-per-second counter.

Find the Busiest Elements

A ranked list of the elements that change most, with the attributes involved, points straight at runaway re-renders.

Common Use Cases

Finding a missing click handler

See at a glance whether a button actually has a listener, or whether the handler sits on a wrapper element instead.

Tracking down scroll stutter

Find every element listening to scroll, wheel or touchmove, including listeners on window and document.

Auditing keyboard support

Check which controls respond to keyboard events and which only respond to the mouse.

Spotting unnecessary re-renders

Watch the mutations counter while the page is idle; elements that keep changing point to a timer or a framework doing extra work.

Learning how a page works

Hover around an unfamiliar site to see which parts are interactive and which framework wired them up.

How to Use
1

Open Event Listeners

Click the Event Listeners icon in the DevSuite Pro dock. A quick scan runs immediately and outlines every element it finds.

2

Hover to inspect

Hover any outlined element to see its events and their sources. Use the category tiles to show only click, hover or scroll listeners.

3

Reload & record for everything

Press Reload & record to reload the page once with recording on. The tool reopens on its own and now includes every addEventListener call.

4

Jump to an element

Click a row in the list to scroll the page to that element and flash it. Copy report gives you the full list as text.

5

Watch the DOM change

Open the DOM mutations tab and use the page. Changing elements flash, and the busiest ones rise to the top of the list.

Ready to Try

Install DevSuite Pro for free and unlock 74+ developer tools for your browser.

Add to Chrome Add to Edge Add to FireFox