TouchEvent
TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等。
每 个 Touch 对象代表一个触点; 每个触点都由其位置,大小,形状,压力大小,和目标 element 描述。 TouchList 对象代表多个触点的一个列表。
构造函数
TouchEvent()(en-US)-
创建一个
TouchEvent对象。
属性列表
TouchEvent的属性继承了 UIEvent 和 Event。
TouchEvent.altKey只读-
布尔值,指明触摸事件触发时,键盘 alt 键是否被按下。
TouchEvent.changedTouches只读-
一个
TouchList对象,包含了代表所有从上一次触摸事件到此次事件过程中,状态发生了改变的触点的Touch对象。 TouchEvent.ctrlKey只读-
布尔值,指明触摸事件触发时,键盘 ctrl 键是否被按下。
TouchEvent.metaKey只读-
布尔值,指明触摸事件触发时,键盘 meta 键(Wikipedia - meta Key)是否被按下。
TouchEvent.shiftKey只读-
布尔值,指明触摸事件触发时,键盘 shift 键是否被按下。
TouchEvent.targetTouches只读-
一个
TouchList对象,是包含了如下触点的Touch对象:触摸起始于当前事件的目标element上,并且仍然没有离开触摸平面的触点。 TouchEvent.touches只读-
一 个
TouchList对象,包含了所有当前接触触摸平面的触点的Touch对象,无论它们的起始于哪个element上,也无论它们状态是否发生了变化。
触摸事件的类型
为了区别触摸相关的状态改变,存在多种类型的触摸事件。可以通过检查触摸事件的 TouchEvent.type 属性来确定当前事件属于哪种类型
备注: 在很多情况下,触摸事件和鼠标事件会同时被触发(目的是让没有对触摸设备优化的代码仍然可以在触摸设备上正常工作)。如果你使用了触摸事件,可以调用 event.preventDefault() 来阻止鼠标事件被触发。
touchstart
touchend
touchmove
touchcancel
与 addEventListener() 和 preventDefault() 一起使用
很值得注意的是,在很多情况下,触摸事件和鼠标事件会一起触发(以使非触摸专用的代码仍然可以与用户交互)。如果你要使用触摸事件,你可以使用 preventDefault() 来取消鼠标事件。
但 Chrome 是例外,从版本 56(桌面版、安卓版和安卓 webview)开始,Chrome 中 touchstart and touchmove 的默认值就是 true,没有必要调用 preventDefault()。如果要重写这个行为,简单地将 passive 设置成 false 就行。这样设置可以阻止监听器在用户滚动时停止页面渲染。Google Developer 有一个简单的演示。
全局事件处理
GlobalEventHandlers.ontouchstart实验性-
使用一个
global event handler处理touchstart事件。 GlobalEventHandlers.ontouchend(en-US) 实验性-
使用一个
global event handler处理touchend事件。 GlobalEventHandlers.ontouchmove实验性-
使用一个
global event handler处理touchmove事件。 GlobalEventHandlers.ontouchcancel实验性-
使用一个
global event handler处理touchcancel事件。
实例
规范
| Specification |
|---|
| Touch Events # touchevent-interface |
浏览器兼容性
BCD tables only load in the browser