v147 · DOM · Pointer Events
Pointer event suppression on drag start
When an HTML drag starts, Chrome 148 now sends pointercancel, pointerout, and pointerleave to the drag source — fulfilling the Pointer Events spec that previously fired these only during scroll and zoom gestures.
concepts
-
Event Stream Visualiser
Drag the card and watch
pointerdown,dragstart, then the newpointercancel→pointerout→pointerleavesequence appear in real time on the event log. -
Before / After Comparison
Side-by-side simulation showing the event sequence a drag source used to receive (no suppression) versus what it receives in Chrome 148+, so you can update any pointer-state guards in your drag code.
-
Event Sequence Explorer
Drag three different elements (draggable, non-draggable, list item) and inspect the exact timestamped event sequence — filtered by event type — to see where
pointercancelfires relative todragstartin Chrome 148+. -
Drag Event Simulator
Drag a chip to see the complete event sequence with a live sequence diagram. Toggle "Old behavior" to compare pre-Chrome 148 output (no pointercancel). A frame-by-frame replay re-animates the last drag with every event highlighted in order.
-
Compatibility Lab
Detects whether
pointercancelfires on drag start via a live drag test. Shows current browser event sequence, compares Chrome 148+ vs older behaviour, and provides thepointercancelguard pattern for safely resetting pointer state in drag libraries.
why it shipped
The Pointer Events specification has always required a pointercancel event when the browser "captures" a pointer for its own gesture — like scrolling or pinch-zoom. HTML Drag and Drop is conceptually the same: once a drag begins, the drag source should receive a final pointercancel to close the event stream, followed by pointerout and pointerleave. Chrome had implemented this for touch drags on Android but not for mouse drags on desktop. Chrome 148 closes the gap on all platforms, aligning with Firefox and allowing drag-and-drop libraries to reliably reset any pointer-state bookkeeping — such as cursor changes, element highlights, and active-drag class names — without relying on heuristics.