Skip to content
文章目录

touchstart

理论上是手指放在屏幕上时就会触发,实际是如果手指没有滑动或者没有拿起离开屏幕,就不会真正执行回调函数

touchmove

手指在屏幕上滑动时触发

touchend

手指从屏幕上离开时触发

touches、targetTouches 和 changedTouches 详解

  • touches: 当前屏幕上所有触摸点的列表;
  • targetTouches: 当前对象上所有触摸点的列表;
  • changedTouches: 涉及当前(引发)事件的触摸点的列表

通过一个例子来区分一下触摸事件中的这三个属性:

  1. 用一个手指接触屏幕,触发事件,此时这三个属性有相同的值。
  2. 用第二个手指接触屏幕,此时,touches 有两个元素,每个手指触摸点为一个值。当两个手指触摸相同元素时, targetTouches 和 touches 的值相同,否则 targetTouches 只有一个值。changedTouches 此时只有一个值, 为第二个手指的触摸点,因为第二个手指是引发事件的原因
  3. 用两个手指同时接触屏幕,此时 changedTouches 有两个值,每一个手指的触摸点都有一个值
  4. 手指滑动时,三个值都会发生变化
  5. 一个手指离开屏幕,touches 和 targetTouches 中对应的元素会同时移除,而 changedTouches 仍然会存在元素。
  6. 手指都离开屏幕之后,touches 和 targetTouches 中将不会再有值,changedTouches 还会有一个值, 此值为最后一个离开屏幕的手指的接触点。

pageX, screenX, clientX 区别

  • pageX 是事件点击位置相对于浏览器左侧的距离,并且包含滚动条的距离
  • screenX 是事件点击位置相对于电脑屏幕(设备)的左侧距离,但是不包含滚动条的距离
  • clientX 是事件点位置相对于浏览器左侧的距离,但是不包含滚动条的距离

参考资料

touch 事件中的 touches、targetTouches 和 changedTouches 详解

touch.pageX/touch.screenX/touch.clientX 的区别