TouchEvent

TouchEvent interface represents an UIEvent 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 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 对象。

构造函数

TouchEvent()
创建 TouchEvent 对象。

特性

This interface inherits properties from its parent, UIEvent and Event .

TouchEvent.altKey 只读
A Boolean value indicating whether or not the alt key was down when the touch event was fired.
TouchEvent.changedTouches 只读
A TouchList of all the Touch objects representing individual points of contact whose states changed between the previous touch event and this one.
TouchEvent.ctrlKey 只读
A Boolean value indicating whether or not the control key was down when the touch event was fired.
TouchEvent.metaKey 只读
A Boolean value indicating whether or not the meta key was down when the touch event was fired.
TouchEvent.shiftKey 只读
A Boolean value indicating whether or not the shift key was down when the touch event was fired.
TouchEvent.targetTouches 只读
A 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 只读
A TouchList of all the Touch objects representing all current points of contact with the surface, regardless of target or changed status.
TouchEvent.rotation 只读
Change in rotation (in degrees) since the event's beginning. Positive values indicate clockwise rotation; negative values indicate anticlockwise rotation. Initial value: 0.0
TouchEvent.scale 只读
Distance 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's TouchEvent.type 特性。

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 属性。

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.

注意: The rate at which 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):

  • 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 Touch TouchList gets 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 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 the passive option for touchstart and touchmove is true and calls to preventDefault() will have no effect. To override this behavior, you need to set the passive option to false , after which calling preventDefault() will work as specified. The change to treat listeners as passive by default prevents the listener from blocking page rendering while a user is scrolling. A demo is available on the Google Developer site.

GlobalEventHandlers

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
A global event handler touchstart 事件。
GlobalEventHandlers.ontouchend
A global event handler touchend 事件。
GlobalEventHandlers.ontouchmove
A global event handler touchmove 事件。
GlobalEventHandlers.ontouchcancel
A global event handler touchcancel 事件。

范例

example on the main Touch events article .

规范

规范 状态 Comment
Touch Events – Level 2
The definition of 'TouchEvent' in that specification.
草案 添加 ontouchstart , ontouchend , ontouchmove , ontouchend global attribute handlers
触摸事件
The definition of 'TouchEvent' in that specification.
Recommendation 初始定义。

浏览器兼容性

更新 GitHub 上的兼容性数据
Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
TouchEvent Chrome 22 Edge 79
79
不支持 ≤18 — 79
Disabled
Disabled From version ≤18 until version 79 (exclusive): this feature is behind the Standards Preview preference (needs to be set to true ).
Firefox 52
52
不支持 18 — 24
Removed in bug 888304 due to web compatibility issues.
IE No Opera 15 Safari No WebView Android ≤37 Chrome Android 25 Firefox Android 6 Opera Android 14 Safari iOS Yes Samsung Internet Android 1.5
TouchEvent() 构造函数 Chrome 48
48
Chrome only supports the following touchEventInit properties: touches , targetTouches , changedTouches .
Edge ≤79
≤79
Edge only supports the following touchEventInit properties: touches , targetTouches , changedTouches .
Firefox ? IE No Opera Yes Safari No WebView Android 48
48
Chrome only supports the following touchEventInit properties: touches , targetTouches , changedTouches .
Chrome Android 48
48
Chrome only supports the following touchEventInit properties: touches , targetTouches , changedTouches .
Firefox Android Yes Opera Android Yes Safari iOS 3.2 Samsung Internet Android 5.0
5.0
Samsung Internet only supports the following touchEventInit properties: touches , targetTouches , changedTouches .
altKey Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
changedTouches Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
ctrlKey Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
metaKey Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
shiftKey Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
targetTouches Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes
touches Chrome 22 Edge ≤18 Firefox 52
52
不支持 18 — 24
IE No Opera Yes Safari No WebView Android Yes Chrome Android Yes Firefox Android 6 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes

图例

完整支持
完整支持
不支持
不支持
兼容性未知
兼容性未知
见实现注意事项。
用户必须明确启用此特征。
用户必须明确启用此特征。

另请参阅