The TouchEvent
interface represents an event sent when the state of contacts with a touch-sensitive surface changes. This surface can be a touch screen or trackpad, for example. The event can describe one or more points of contact with the screen and includes support for detecting movement, addition and removal of contact points, and so forth.
Touches are represented by the Touch
object; each touch is described by a position, size and shape, amount of pressure, and target element. Lists of touches are represented by TouchList
objects.
TouchEvent()
TouchEvent
object.This interface inherits properties from its parent, UIEvent
and Event
.
TouchEvent.altKey
Read only
TouchEvent.changedTouches
Read only
TouchList
of all the Touch
objects representing individual points of contact whose states changed between the previous touch event and this one.TouchEvent.ctrlKey
Read only
TouchEvent.metaKey
Read only
TouchEvent.shiftKey
Read only
TouchEvent.targetTouches
Read only
TouchList
of all the Touch
objects that are both currently in contact with the touch surface and were also started on the same element that is the target of the event.TouchEvent.touches
Read only
TouchList
of all the Touch
objects representing all current points of contact with the surface, regardless of target or changed status.TouchEvent.rotation
Read only
0.0
TouchEvent.scale
Read only
1.0
There are several types of event that can be fired to indicate that touch-related changes have occurred. You can determine which of these has happened by looking at the event's TouchEvent.type
property.
touchstart
Sent when the user places a touch point on the touch surface. The event's target will be the element
in which the touch occurred.
touchend
Sent when the user removes a touch point from the surface (that is, when they lift a finger or stylus from the surface). This is also sent if the touch point moves off the edge of the surface; for example, if the user's finger slides off the edge of the screen.
The event's target is the same element
that received the touchstart
event corresponding to the touch point, even if the touch point has moved outside that element.
The touch point (or points) that were removed from the surface can be found in the TouchList
specified by the changedTouches
attribute.
touchmove
Sent when the user moves a touch point along the surface. The event's target is the same element
that received the touchstart
event corresponding to the touch point, even if the touch point has moved outside that element.
This event is also sent if the values of the radius, rotation angle, or force attributes of a touch point change.
touchmove
events is sent is browser-specific, and may also vary depending on the capability of the user's hardware. You must not rely on a specific granularity of these events.touchcancel
Sent when a touch point has been disrupted in some way. There are several possible reasons why this might happen (and the exact reasons will vary from device to device, as well as browser to browser):
Touch
in the TouchList
gets canceled.It's important to note that in many cases, both touch and mouse events get sent (in order to let non-touch-specific code still interact with the user). If you use touch events, you should call preventDefault()
to keep the mouse event from being sent as well.
The exception to this is Chrome, starting with version 56 (desktop, Chrome for android, and android webview), where the default value for touchstart
and touchmove
is true
and calls to preventDefault()
are not needed. To override this behavior, you simply set the passive
option to false
as shown in the example below. This change prevents the listener from blocking page rendering while a user is scrolling. A demo is available on the Google Developer site.
The GlobalEventHandlers
mixin defines these events as global events that are available on any element in the DOM that the user can interact with.
GlobalEventHandlers.ontouchstart
global event handler.0
for the touchstart
event.GlobalEventHandlers.ontouchend
global event handler.0
for the touchend
event.GlobalEventHandlers.ontouchmove
global event handler.0
for the touchmove
event.GlobalEventHandlers.ontouchcancel
global event handler.0
for the touchcancel
event.See the example on the main Touch events article.
Specification | Status | Comment |
---|---|---|
Touch Events – Level 2 The definition of 'TouchEvent' in that specification. | Draft | Added ontouchstart , ontouchend , ontouchmove , ontouchend global attribute handlers |
Touch Events The definition of 'TouchEvent' in that specification. | Recommendation | Initial definition. |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 22 | Yes
|
52
|
No | Yes | No |
TouchEvent() constructor |
48
|
? | ? | No | Yes | No |
altKey |
22 | Yes | 52
|
No | Yes | No |
changedTouches |
22 | Yes | 52
|
No | Yes | No |
ctrlKey |
22 | Yes | 52
|
No | Yes | No |
metaKey |
22 | Yes | 52
|
No | Yes | No |
shiftKey |
22 | Yes | 52
|
No | Yes | No |
targetTouches |
22 | Yes | 52
|
No | Yes | No |
touches |
22 | Yes | 52
|
No | Yes | No |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | ? | 6 | Yes | Yes | ? |
TouchEvent() constructor |
48
|
48
|
? | Yes | 12 | 3.2 | ? |
altKey |
Yes | Yes | ? | 6 | Yes | Yes | ? |
changedTouches |
Yes | Yes | ? | 6 | Yes | Yes | ? |
ctrlKey |
Yes | Yes | ? | 6 | Yes | Yes | ? |
metaKey |
Yes | Yes | ? | 6 | Yes | Yes | ? |
shiftKey |
Yes | Yes | ? | 6 | Yes | Yes | ? |
targetTouches |
Yes | Yes | ? | 6 | Yes | Yes | ? |
touches |
Yes | Yes | ? | 6 | Yes | Yes | ? |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent