TouchEvent
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
TheTouchEvent interface represents anUIEvent which is 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 theTouch object; each touch is described by a position, size and shape, amount of pressure, and target element. Lists of touches are represented byTouchList objects.
In this article
Constructor
TouchEvent()Creates a
TouchEventobject.
Instance properties
This interface inherits properties from its parent,UIEvent andEvent.
TouchEvent.altKeyRead onlyA Boolean value indicating whether or not the alt key was down when the touch event was fired.
TouchEvent.changedTouchesRead onlyA
TouchListof all theTouchobjects representing individual points of contact whose states changed between the previous touch event and this one.TouchEvent.ctrlKeyRead onlyA Boolean value indicating whether or not the control key was down when the touch event was fired.
TouchEvent.metaKeyRead onlyA Boolean value indicating whether or not the meta key was down when the touch event was fired.
TouchEvent.shiftKeyRead onlyA Boolean value indicating whether or not the shift key was down when the touch event was fired.
TouchEvent.targetTouchesRead onlyA
TouchListof all theTouchobjects that are both currently in contact with the touch surfaceand were also started on the same element that is the target of the event.TouchEvent.touchesRead onlyA
TouchListof all theTouchobjects representing all current points of contact with the surface, regardless of target or changed status.TouchEvent.rotationNon-standardRead onlyChange in rotation (in degrees) since the event's beginning. Positive values indicate clockwise rotation; negative values indicate counterclockwise rotation. Initial value:
0.0.TouchEvent.scaleNon-standardRead onlyDistance between two digits since the event's beginning. Expressed as a floating-point multiple of the initial distance between the digits at the beginning of the event. Values below 1.0 indicate an inward pinch (zoom out). Values above 1.0 indicate an outward unpinch (zoom in). Initial value:
1.0.
Touch event types
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'sTouchEvent.type property.
touchstartSent when the user places a touch point on the touch surface.The event's target will be the
elementin which the touch occurred.touchendSent 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 sentif 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
elementthat received thetouchstarteventcorresponding to the touch point,even if the touch point has moved outside that element.The touch point (or points)that were removed from the surfacecan be found in the
TouchListspecified by thechangedTouchesattribute.touchmoveSent when the user moves a touch point along the surface.The event's target is the same
elementthat received thetouchstartevent corresponding to the touch point,even if the touch point has moved outside that element.This event is also sentif the values of the radius, rotation angle, or force attributes of a touch point change.
Note:The rate at which
touchmoveevents 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.touchcancelSent 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):
- An event of some kind occurred that canceled the touch; this might happen if a modal alert pops up during the interaction.
- The touch point has left the document window and moved into the browser's UI area, a plug-in, or other external content.
- The user has placed more touch points on the screen than can be supported, in which case the earliest
Touchin theTouchListgets canceled.
Using with addEventListener() and preventDefault()
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 callpreventDefault() 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 thepassive option fortouchstart andtouchmove istrue and calls topreventDefault() will have no effect. To override this behavior, you need to set thepassive option tofalse, after which callingpreventDefault() will work as specified. The change to treat listeners aspassive by default prevents the listener from blocking page rendering while a user is scrolling. A demo is available on theChrome Developer site.
Example
Specifications
| Specification |
|---|
| Touch Events> # touchevent-interface> |