2

我最近一直在忙于一个项目,直到现在我一直在使用 chromes debugger mobile emulator。这意味着我已经能够用鼠标模拟触摸和拖动行为。不幸的是,因为只有一只鼠标,我永远无法同时做这两个。

我正在处理的项目向页面添加了两个半页大小的 DOM 元素,左侧的一个绑定了 touchmove 事件侦听器,右侧的另一个绑定了 touchstart 事件侦听器。他们都在游泳。

但是今晚我把我的项目上传到网上来测试一些东西,然后用 iPad 打开它,发现我一次只能执行一个动作。当我在左侧 touchmove 时,页面无法检测到右侧的 touchstart 事件,同样,当我点击右侧时,也无法检测到左侧的 touchmove 事件。

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

此处包含的代码片段有点大,但 github 存储库的链接在这里:https ://github.com/matthewolsson/JoyShtick

4

1 回答 1

1

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

知道了这一点,我已经通过使用targetTouches触摸列表来纠正这种情况。该链接给出了一个很好的总结,但基础是这是一个单一的触摸数组,仅由第一个开始的 DOM 元素中发生的触摸填充。

你可以在这里找到这个列表的精彩解释~(stackoverflow.com/questions/7056026/variation-of-e-touches-e-targettouches-and-e-changedtouches)。最后但同样重要的是,W3C 有一个关于触摸事件及其所有功能的非常详细的页面。

于 2014-10-22T06:42:01.990 回答