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

IT技术 javascript webkit touch
2021-02-24 11:08:09

比方说,我正在听的touchstarttouchmovetouchend在上body的元素。

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

我的意思是,在某个特定时刻进行一次触摸,我会获取 touchevent 并对其进行解析。根据我的经验,所有三个触摸变量都是相同的。

我必须将解析的数据发送到服务器,发送三倍相同的字符串是非常多余的,有没有办法将它们发送一次并以编程方式在服务器上重现触摸事件?

1个回答

我们有以下清单:

  • touches:当前触摸屏幕的每个手指的信息列表
  • targetTouches: 像触摸一样,但被过滤到只有在同一节点内开始的手指触摸的信息
  • changedTouches:事件中涉及的每个手指的信息列表

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

  • 当我放下手指时,所有三个列表都将具有相同的信息。它会是changedTouches因为放下手指是导致事件的原因
  • 当我放下第二根手指时,touches将有两个项目,每个手指一个。targetTouches只有当手指与第一个手指放在同一节点时才会有两个项目。changedTouches将有与第二根手指相关的信息,因为它是导致事件的原因
  • 如果我同时放下两根手指,可能会放入两个物品changedTouches,每个手指一个
  • 如果我移动手指,唯一会改变的列表changedTouches将包含与移动的手指(至少一个)相关的信息。
  • 当我抬起一根手指时,它会从 中移除touchestargetTouches并且会出现在,changedTouches因为它是导致事件的原因
  • 删除我的最后一根手指将离开touches并为targetTouches空,changedTouches并将包含最后一根手指的信息
e.touches当您附加到touchmove,即更新时,您似乎也可以得到更新e.touches[0].pageX是否有这种方法不起作用的情况?
2021-04-24 11:08:09
如果您同时移动一个手指(那已经是向下的)并同时放置一个手指(touchstart),这两个事件是否都在 changedTouches 中?
2021-04-25 11:08:09
此信息是否适用于所有设备,即 Android 和 Safari 环境?
2021-05-01 11:08:09
你能澄清节点术语吗?
2021-05-03 11:08:09
他们应该是一样的。我想,对于 '''touchmove''',nit 是 '''changedTouches''' 变化的方式。
2021-05-05 11:08:09