All Animation Frames
- Event Breakpoint… This will have the same effect as the All Events Event Breakpoint, but it will be limited to a specific DOM event name (including custom DOM event names) instead of for every DOM event.
All Global Event Breakpoints are preserved across Web Inspector sessions.
Global Event Breakpoints are a great way of seeing whether a DOM event has any listeners or to debugging issues related to DOM event dispatch ordering (e.g. capturing vs. bubbling).
But sometimes, the issue is related to a specific DOM event listener, like a specific callback for a
click DOM event on a specific DOM node.
In these cases, setting a Global Event Breakpoint for
click wouldn’t be ideal, as there may be other
click DOM events that are fired on other nodes or with other callbacks.
The ideal solution would be to be able to set a breakpoint on the callback such that it only fires when that callback is invoked in response to the specific DOM event being fired on the specific DOM node.
This can be done in Web Inspector from the Event Listeners section in the Node panel in the details sidebar in the Elements Tab.
The Event Listeners section enumerates all of the DOM event listeners for the selected DOM node, and for all of its ancestors, and provides information about each:
- Target is a representation of the DOM node target.
- Event is the name of the DOM event.
- Function shows information about the callback, like function name and/or source code location.
- Capturing will only be shown if that specific DOM event listener was added with a
- Bubbling will only be shown if that specific DOM event listener was added without a
useCaptureoption (or if it was set to
- Attribute will only be shown if that specific DOM event listener was added via an HTML attribute.
- Passive will only be shown if that specific DOM event listener was added with a
- Once will only be shown if that specific DOM event listener was added with a
onceoption, which means that the specific DOM event listener will be automatically removed after it’s executed.
In addition to this information, there are also two checkboxes:
- Enabled, when unchecked, will prevent that specific DOM event listener for that specific DOM event for that specific DOM node from ever being fired, effectively “removing” the DOM event listener entirely.
- Breakpoint, when checked, will set a Specific Listener Breakpoint as described above.
The Event Listener section will update as DOM event listeners are added and removed, and the Enabled and Breakpoint checked state will be preserved when changing DOM nodes.
Each sub-section also has a [Options] in the top-right when hovered that provides a quick way to enable/disable or set/remove Specific Listener Breakpoints on all event listeners in that sub-section.
The Event Listener section can also be changed to Group By Target instead of the default Group By Event by clicking on the [Grouping Method] in the top-right.
Specific Listener Breakpoints are not preserved across Web Inspector sessions.
Event Breakpoints have a few different configuration options, reachable by right-clicking and selecting Edit Breakpoint… in the context menu.
Rather than execute arbitrary code, however, you may just want to ignore the first few times the Event Breakpoint is reached. If this is the case, setting the Ignore input to any positive integer will prevent the Event Breakpoint from pausing execution until it has been reached that many times.
Now you may be wondering what’s an Action. There are four different types:
This is basically a “shortcut” for logging values using
Adding one of these will cause Web Inspector to play a system beep sound whenever the Event Breakpoint is hit.
Probe Expression s can be thought of almost like a mini-Console. Each time the related Event Breakpoint is hit, the Probe Expression is evaluated and the result is saved in the Probe panel in the details sidebar in the Sources Tab, allowing you to see how the result of the expression changes during the lifetime of your program. You can use this to observe changes to a specific variable (e.g.
this), or to changes in an entire expression (e.g.
this.foo === "bar").
If any Action is set, you can also configure the Event Breakpoint to Automatically continue after evaluating. This will cause the Event Breakpoint to become effectively “invisible”, in that it will never pause execution. Event Breakpoints that Automatically continue after evaluating will have a small white triangle (“hollow”) in the icon:
Event Breakpoints can either be enabled or disabled . Ideally, Event Breakpoints will always be enabled , but there are a few reasons why they would be disabled :
- the Event Breakpoint was manually disabled . Clicking (or right-clicking and selecting Enable Breakpoint or Disable Breakpoint in the context menu) on any breakpoint icon in the navigation sidebar in the Sources Tab will toggle between enabled and disabled .
- breakpoints have been globally disabled . The global breakpoint control is a button that looks just like a breakpoint located in the top of the navigation sidebar in the Sources Tab.
All enable/disable/delete toggles are available in the context menu when right-clicking on any Event Breakpoint.
- enabled (breakpoints globally enabled)
- enabled (breakpoints globally enabled) with auto-continue
- disabled (breakpoints globally enabled)
- disabled (breakpoints globally enabled) with auto-continue
- enabled (breakpoints globally disabled)
- enabled (breakpoints globally disabled) with auto-continue
- disabled (breakpoints globally disabled)
- disabled (breakpoints globally disabled) with auto-continue