e.touches,e.targetTouches和e.changedTouches的变化

时间:2011-08-14 09:24:15

标签: javascript webkit touch

假设我在touchstart元素上收听touchmovetouchendbody

如果我错了,请告诉我,但我认为e.touchese.targetTouches相同?如果是这样,e.changedTouches与他们的关系如何变化?

我的意思是,只要在一个特定时刻触摸一下,我就会获取touchevent并解析它。根据我的经验,所有三个触摸变量都是相同的。

我必须将解析后的数据发送到服务器,发送三次完全相同的字符串是非常多余的,是不是有任何方式发送它们一次并以编程方式重现服务器上的touchevent?

1 个答案:

答案 0 :(得分:179)

我们有以下列表:

  • touches:当前触摸屏幕的每个手指的信息列表
  • targetTouches:与触摸相似,但仅过滤为同一节点内开始的手指触摸信息
  • changedTouches:事件中涉及的每个手指的信息列表

为了更好地理解这些列表中可能包含的内容,让我们快速浏览一些示例。它们根据以下规则而有所不同:

  • 当我放下手指时,所有三个列表都将具有相同的信息。它将在changedTouches中,因为放下手指是造成事件的原因
  • 当我放下第二根手指时,touches将有两个项目,每个手指一个。仅当手指与第一根手指放在同一节点时,targetTouches才有两项。 changedTouches将获得与第二根手指相关的信息,因为它是造成事件的原因
  • 如果我在同一时间放下两根手指,可以在changedTouches中有两个项目,每个手指一个
  • 如果我移动我的手指,唯一会改变的列表是changedTouches,并且将包含与移动的手指数量相关的信息(至少一个)。
  • 当我抬起手指时,它会从touchestargetTouches移除,并会显示在changedTouches中,因为它是造成事件的原因
  • 删除我的最后一根手指会使touchestargetTouches为空,changedTouches将包含最后一根手指的信息