Element: click event
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
An element receives a click
event when any of the following occurs:
- A pointing-device button (such as a mouse's primary button) is both pressed and released while the pointer is located inside the element.
- A touch gesture is performed on the element.
- Any user interaction that is equivalent to a click occurs, such as pressing the Space key or Enter key while the element is focused.
Note: In practice, browsers don't fire the click
event for custom controls (such as a <div>
with tabindex="0"
) when activated by keyboard. To check the reason behind this behavior, see this Chromium issue.
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.
Syntax
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener("click", (event) => {});
onclick = (event) => {};
Event type
A PointerEvent
. Inherits from MouseEvent
.
Note: In earlier versions of the specification the event type for this event was a MouseEvent
, and this is still the type passed in Firefox and Safari.
Event properties
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
to1
, where0
and1
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
to1
, where0
is the neutral position of the control. PointerEvent.tiltX
Read only-
The plane angle (in degrees, in the range of
-90
to90
) 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
to90
) 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
to359
. 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.
Usage notes
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.
Examples
This example displays the number of consecutive clicks on a <button>
.
HTML
<button>Click</button>
JavaScript
const button = document.querySelector("button");
button.addEventListener("click", (event) => {
button.textContent = `Click count: ${event.detail}`;
});
Result
Try making rapid, repeated clicks on the button to increase the click count. If you take a break between clicks, the count will reset.
Specifications
Specification |
---|
UI Events # event-type-click |
HTML Standard # handler-onclick |
Browser compatibility
BCD tables only load in the browser