coderef

Pointer EventsBaseline · Widely available

Pointer events, such as pointerdown, and the PointerEvent API, represent general pointing inputs, from a wide range of devices, such as a mouse, pen or stylus, or touch with one or more fingers. Not to be confused with the pointer-events CSS property.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 28, 2020. Widely available since Jan 28, 2023.

Browser support

DesktopChrome
1–54Not supported
55+Supportedsince Dec 1, 2016
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–58Not supported
59+Supportedsince Mar 13, 2018
Current: 157
Safari
1–12.1Not supported
13+Supportedsince Sep 19, 2019
Current: 27
MobileChrome Android
18–54Not supported
55+Supportedsince Dec 6, 2016
Current: 155
Firefox Android
4–68Not supported
79+Supportedsince Jul 28, 2020
Current: 157
Safari iOS
1–12.2Not supported
13+Supportedsince Sep 19, 2019
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: gotpointercapture event.

Feature detection

JS · check before using
if ("PointerEvent" in globalThis) {
  // PointerEvent is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (38). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Element.auxclick_event.type_pointerevent929212918.29212918.2
Element.click_event.type_pointerevent929212918.29212918.2
Element.contextmenu_event.type_pointerevent929212918.292129✕
Element.gotpointercapture_event57175913577913
Element.hasPointerCapture55795913557913
Element.lostpointercapture_event57175913577913
Element.pointercancel_event55125913557913
Element.pointerdown_event55125913557913
Element.pointerenter_event55125913557913
Element.pointerleave_event55125913557913
Element.pointermove_event55125913557913
Element.pointerout_event55125913557913
Element.pointerover_event55125913557913
Element.pointerrawupdate_event7779148✕77148✕
Element.pointerup_event55125913557913
Element.releasePointerCapture55125913557913
Element.setPointerCapture55125913557913
Navigator.maxTouchPoints35125913357913
PointerEvent55125913557913
PointerEvent.PointerEvent55125913557913
Show 18 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
PointerEvent.PointerEvent.options_altitudeAngle_parameter868613118.28613118.2
PointerEvent.PointerEvent.options_azimuthAngle_parameter868613118.28613118.2
PointerEvent.altitudeAngle868613118.28613118.2
PointerEvent.azimuthAngle868613118.28613118.2
PointerEvent.getCoalescedEvents58795918.258✕18.2
PointerEvent.getPredictedEvents77798918.2778918.2
PointerEvent.height55125913557913
PointerEvent.isPrimary55125913557913
PointerEvent.persistentDeviceId128128141✕128141✕
PointerEvent.pointerId55125913557913
PointerEvent.pointerType55125913557913
PointerEvent.pointerType.fractional_coordinates✕✕13526.2✕13526.2
PointerEvent.pressure55125913557913
PointerEvent.tangentialPressure57795913577913
PointerEvent.tiltX55125913557913
PointerEvent.tiltY55125913557913
PointerEvent.twist57185913577913
PointerEvent.width55125913557913