检测touchmove时检测touchstart

时间:2014-10-21 06:47:29

标签: javascript mobile touchstart touchmove

我最近一直在关注一个项目,直到现在我一直在使用chromes调试器移动模拟器。这意味着我已经能够用鼠标模拟触摸和拖动行为。 不幸的是,由于只有一只鼠标,我不可能同时做两件事。

我正在开发的项目向页面添加了两个半页大小的DOM元素,左边的那个元素绑定了一个touchmove事件监听器,右边的另一个有一个绑定到它的touchstart事件监听器。他们都在游泳。

但今晚我上传我的项目在网上测试一些东西并用iPad打开它,发现我一次只能执行一个动作。当我触摸左侧时,页面无法检测到右侧的触摸启动事件,而当我点击右侧时,同样无法检测左侧的触摸事件。

之前有人做过这样的事吗?就像在不同的DOM元素上检测不同的触摸集一样?

此处包含的代码段有点大,但是指向github仓库的链接位于:https://github.com/matthewolsson/JoyShtick

1 个答案:

答案 0 :(得分:1)

DOM元素共享一个触摸数组。在此测试阶段之前,我假设任何应用了触摸侦听器的单个DOM元素都有自己的相关触摸数组。现在我知道页面上的每个元素,无论它的听众如何,都会产生一个单一的触摸数组,用于存储页面上的所有当前触摸。

了解这一点我已使用targetTouches触摸列表纠正了这种情况。该链接给出了一个很好的总结,但基本的是这是一个单一的触摸数组,只有在第一个开始的DOM元素内发生的触摸才会填充。

你可以在这里找到这个列表的精彩解释〜(stackoverflow.com/questions/7056026/variation-of-e-touches-e-targettouches-and-e-changedtouches)。最后但并非最不重要的是,W3C在触摸事件及其所有功能上都有非常详细的page