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: 155Edge
12+Supportedsince Jul 29, 2015
Current: 154Firefox
1–58Not supported
59+Supportedsince Mar 13, 2018
Current: 157Safari
1–12.1Not supported
13+Supportedsince Sep 19, 2019
Current: 27MobileChrome Android
18–54Not supported
55+Supportedsince Dec 6, 2016
Current: 155Firefox Android
4–68Not supported
79+Supportedsince Jul 28, 2020
Current: 157Safari iOS
1–12.2Not supported
13+Supportedsince Sep 19, 2019
Current: 27How 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-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Element.auxclick_event.type_pointerevent | 92 | 92 | 129 | 18.2 | 92 | 129 | 18.2 |
| Element.click_event.type_pointerevent | 92 | 92 | 129 | 18.2 | 92 | 129 | 18.2 |
| Element.contextmenu_event.type_pointerevent | 92 | 92 | 129 | 18.2 | 92 | 129 | ✕ |
| Element.gotpointercapture_event | 57 | 17 | 59 | 13 | 57 | 79 | 13 |
| Element.hasPointerCapture | 55 | 79 | 59 | 13 | 55 | 79 | 13 |
| Element.lostpointercapture_event | 57 | 17 | 59 | 13 | 57 | 79 | 13 |
| Element.pointercancel_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerdown_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerenter_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerleave_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointermove_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerout_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerover_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.pointerrawupdate_event | 77 | 79 | 148 | ✕ | 77 | 148 | ✕ |
| Element.pointerup_event | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.releasePointerCapture | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Element.setPointerCapture | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| Navigator.maxTouchPoints | 35 | 12 | 59 | 13 | 35 | 79 | 13 |
| PointerEvent | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.PointerEvent | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
Show 18 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| PointerEvent.PointerEvent.options_altitudeAngle_parameter | 86 | 86 | 131 | 18.2 | 86 | 131 | 18.2 |
| PointerEvent.PointerEvent.options_azimuthAngle_parameter | 86 | 86 | 131 | 18.2 | 86 | 131 | 18.2 |
| PointerEvent.altitudeAngle | 86 | 86 | 131 | 18.2 | 86 | 131 | 18.2 |
| PointerEvent.azimuthAngle | 86 | 86 | 131 | 18.2 | 86 | 131 | 18.2 |
| PointerEvent.getCoalescedEvents | 58 | 79 | 59 | 18.2 | 58 | ✕ | 18.2 |
| PointerEvent.getPredictedEvents | 77 | 79 | 89 | 18.2 | 77 | 89 | 18.2 |
| PointerEvent.height | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.isPrimary | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.persistentDeviceId | 128 | 128 | 141 | ✕ | 128 | 141 | ✕ |
| PointerEvent.pointerId | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.pointerType | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.pointerType.fractional_coordinates | ✕ | ✕ | 135 | 26.2 | ✕ | 135 | 26.2 |
| PointerEvent.pressure | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.tangentialPressure | 57 | 79 | 59 | 13 | 57 | 79 | 13 |
| PointerEvent.tiltX | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.tiltY | 55 | 12 | 59 | 13 | 55 | 79 | 13 |
| PointerEvent.twist | 57 | 18 | 59 | 13 | 57 | 79 | 13 |
| PointerEvent.width | 55 | 12 | 59 | 13 | 55 | 79 | 13 |