2012-07-03 87 views
0

我开发了一个Web应用程序,它内置了一些触摸处理代码。在接触时,它会保存对事件中changedTouches的引用。触摸时,它遍历changedTouches并尝试将它们与touchDown事件中存储的触摸对象进行匹配,表示触摸结束。看起来触摸对象在两个事件中并不相同,这意味着我无法匹配触摸。该应用程序在iOS中非常适用,桌面上的Safari和Chrome中也有一些触摸事件模拟。在Android上的Chrome似乎是一个问题。Android Chrome浏览器对象不会在事件之间持续存在

下面是一个例子: jsFiddle

回答

3

触摸的顺序TouchLists不能保证保持一致。您应该依靠touch.identifier来代替。请参阅touch events specification

4

Android版Chrome中存在一个缺陷,触摸和changedTouches阵列不能正确保留自己的唯一标识符,除非您在touchmove或touchstart事件上应用event.preventDefault()

这个错误影响了Chrome在冰淇淋三明治和果冻豆的安卓系统,并且一直未解决。因此,第一张海报是正确的,您应该依靠touches[i].identifierchangedTouches[i].identifier,请记住,您必须在touchmove或touchstart上致电event.preventDefault()才能使这些标识符正确保持。

http://code.google.com/p/android/issues/detail?id=19827

相关问题