The pointerdown event fires when a pointer becomes active. Learn addEventListener vs onpointerdown, pointerId / pointerType, how it differs from mousedown, implicit touch capture, drag-start with setPointerCapture, and five try-it labs.
01
Kind
Instance event
02
Type
PointerEvent
03
When
Pointer becomes active
04
Handler
onpointerdown
05
Pair ends
pointerup · pointercancel
06
Status
Baseline widely available
Fundamentals
Introduction
pointerdown answers: “Did a pointer just become active on this element?” That covers mouse (first button), touch (finger down), and pen (stylus contact) under one API.
Prefer Pointer Events when you want one code path for mouse, touch, and pen. Keep primary UI activation on click so keyboard users share the same path.
💡
Beginner tip
With a physical mouse, mousedown fires for every button press. pointerdown fires only for the first button; extra buttons held together do not fire more pointerdown events.
Concept
Understanding pointerdown
An instance event that answers: “Did this pointer just go active?”
Mouse — first button pressed (not each additional button).
Touch — physical contact with the digitizer.
Pen — stylus makes contact with the digitizer.
PointerEvent — pointerId, pointerType, isPrimary, and more.
Baseline Widely available on MDN (since July 2020).
Foundation
📝 Syntax
Use the event name with addEventListener, or set the handler property:
A PointerEvent (inherits from MouseEvent and Event).
Handy properties
Property
Meaning
pointerId
Unique id for this pointer stream (key multi-touch state by this)
pointerType
mouse, pen, touch, etc.
isPrimary
Whether this is the primary pointer of that type
clientX / clientY
Pointer position in the viewport
pressure / width / height
Contact geometry and pressure when available
Touch detail
🤳 Implicit Pointer Capture
MDN notes that on touchscreen browsers that allow direct manipulation, pointerdown can trigger implicit pointer capture. The target then receives later pointer events as if they occurred over it.
While that capture is set, pointerover / pointerenter / pointerleave / pointerout may not fire as you would expect.
Release with releasePointerCapture(), or wait for pointerup / pointercancel.
You can also call setPointerCapture(pointerId) yourself for drag UIs.
Compare
⚖️ pointerdown vs Related Events
Event
Typical use
pointerdown
First contact / first mouse button; unified input model
Capture ends on pointerup / pointercancel (or releasePointerCapture). Also listen for gotpointercapture / lostpointercapture when you care about the capture lifecycle itself.
Example 5 — pointerdown vs mousedown Counts
Hold multiple mouse buttons and compare how often each event fires.
pointerdown is marked Baseline Widely available on MDN (since July 2020). Logos use the shared browser-image-sprite.png sprite from this project. Pointer Events unify mouse, touch, and pen across modern engines.
✓ Baseline · Widely available
Element pointerdown
Fires when a pointer becomes active; pair with pointerup / pointercancel and prefer click for primary actions.
FullWidely available
Google ChromeFull support
Yes
Mozilla FirefoxFull support
Yes
Apple SafariFull support
Yes
Microsoft EdgeFull support
Yes
OperaFull support
Yes
Internet ExplorerPointer Events (legacy IE11 path)
Partial
pointerdownBaseline
Bottom line: Use pointerdown to start unified gestures. Remember the first-button difference vs mousedown on multi-button mice.
Wrap Up
Conclusion
pointerdown is the unified “pointer became active” signal. Use it to start gestures, capture pointers for drag, and branch by device type—then end on pointerup or pointercancel.
Prefer pointerdown for unified mouse/touch/pen gesture starts
Key multi-touch state by pointerId
Call setPointerCapture when drag must continue outside the hit area
Clear state on both pointerup and pointercancel
Prefer click for primary activate actions
❌ Don’t
Assume pointerdown equals mousedown for multi-button mice
Replace click with pointerdown for primary buttons/links
Forget implicit touch capture can change over/leave behavior
Ignore cancel paths on mobile / stylus devices
Overwrite onpointerdown if you need multiple listeners
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about pointerdown
Pointer became active—one API for mouse, touch, and pen.
5
Core concepts
📱01
On active
fires immediately
Trigger
📄02
PointerEvent
id · type · coords
API
👆03
vs mousedown
first button only
Compare
🔓04
Capture
drag start path
Pattern
🎯05
Baseline
since Jul 2020
Status
❓ Frequently Asked Questions
It fires when a pointer becomes active: for mouse when the first button is pressed, for touch when contact starts, and for pen when the stylus touches the digitizer.
No. MDN marks Element pointerdown as Baseline Widely available (since July 2020). It is not Deprecated, Experimental, or Non-standard.
A PointerEvent (inherits from MouseEvent and Event). Useful fields include pointerId, pointerType, isPrimary, pressure, and width/height.
With a physical mouse, mousedown fires for every button press. pointerdown fires only for the first button; additional buttons held at the same time do not fire more pointerdown events.
On touchscreen browsers that allow direct manipulation, pointerdown can trigger implicit pointer capture so later events target the same element until pointerup or pointercancel (or you call releasePointerCapture).
Prefer it to start unified mouse/touch/pen gestures, drag sessions, and setPointerCapture. Keep primary activate actions on click for keyboard accessibility.
Did you know?
Holding left then right mouse buttons can produce two mousedown events but only one pointerdown (the first button). That is the same multi-button rule MDN highlights when comparing mouse and pointer models.