This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
An element receives a click event when any of the following occurs:
tabindex attribute.If the button is pressed on one element and the pointer is moved outside the element before the button is released, the event is fired on the most specific ancestor element that contained both elements.
click fires after both the mousedown and mouseup events have fired, in that order.
The event is a device-independent event — meaning it can be activated by touch, keyboard, mouse, and any other mechanism provided by assistive technology.
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("click", (event) => { })
onclick = (event) => { }
A PointerEvent. Inherits from MouseEvent.
Note: In earlier versions of the specification, the event type for this event was a MouseEvent. Check browser compatibility for more information.
This interface inherits properties from MouseEvent and Event.
PointerEvent.altitudeAngle Read only Experimental
Represents the angle between a transducer (a pointer or stylus) axis and the X-Y plane of a device screen.
PointerEvent.azimuthAngle Read only Experimental
Represents the angle between the Y-Z plane and the plane containing both the transducer (a pointer or stylus) axis and the Y axis.
PointerEvent.pointerId Read only
A unique identifier for the pointer causing the event.
PointerEvent.width Read only
The width (magnitude on the X axis), in CSS pixels, of the contact geometry of the pointer.
PointerEvent.height Read only
The height (magnitude on the Y axis), in CSS pixels, of the contact geometry of the pointer.
PointerEvent.pressure Read only
The normalized pressure of the pointer input in the range 0 to 1, where 0 and 1 represent the minimum and maximum pressure the hardware is capable of detecting, respectively.
PointerEvent.tangentialPressure Read only
The normalized tangential pressure of the pointer input (also known as barrel pressure or cylinder stress) in the range -1 to 1, where 0 is the neutral position of the control.
PointerEvent.tiltX Read only
The plane angle (in degrees, in the range of -90 to 90) between the Y–Z plane and the plane containing both the pointer (e.g., pen stylus) axis and the Y axis.
PointerEvent.tiltY Read only
The plane angle (in degrees, in the range of -90 to 90) between the X–Z plane and the plane containing both the pointer (e.g., pen stylus) axis and the X axis.
PointerEvent.twist Read only
The clockwise rotation of the pointer (e.g., pen stylus) around its major axis in degrees, with a value in the range 0 to 359.
PointerEvent.pointerType Read only
Indicates the device type that caused the event (mouse, pen, touch, etc.).
PointerEvent.isPrimary Read only
Indicates if the pointer represents the primary pointer of this pointer type.
The PointerEvent object passed into the event handler for click has its detail property set to the number of times the target was clicked. In other words, detail will be 2 for a double-click, 3 for triple-click, and so forth. This counter resets after a short interval without any clicks occurring; the specifics of how long that interval is may vary from browser to browser and across platforms. The interval is also likely to be affected by user preferences; for example, accessibility options may extend this interval to make it easier to perform multiple clicks with adaptive interfaces.
This example displays the number of consecutive clicks on a <button>.
<button>Click</button>
const button = document.querySelector("button");
button.addEventListener("click", (event) => {
button.textContent = `Click count: ${event.detail}`;
});
Try making rapid, repeated clicks on the button to increase the click count. If you take a break between clicks, the count will reset.
| Specification |
|---|
| UI Events> # event-type-click> |
| HTML> # handler-onclick> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
click_event |
1 | 12 | 6Beginning in Firefox 68, Firefox no longer incorrectly sends aclick event for buttons other than the primary mouse button; previously, there were circumstances in which this would occur. One example: middle-clicking a link would send a click to the document's <html> element. |
11.6 | 3 | 18 | 6 | 12.1 | 1 | 1.0 | 4.4 | 1 |
type_pointerevent |
92 | 92 | 129 | 78 | 18.2 | 92 | 129 | 65 | 18.2 | 16.0 | 92 | 18.2 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event