0

我开发了一个内置了一些触摸处理代码的网络应用程序。在触摸时,它会在事件中保存对 changedTouches 的引用。在 touch up 时,它会遍历 changedTouches 并尝试将它们与 touchDown 事件中存储的触摸对象相匹配,从而发出触摸结束的信号。不过,这两个事件的触摸对象似乎并不相同,这意味着我无法匹配触摸。该应用程序在 iOS 以及桌面上的 Safari 和 Chrome 中运行良好,并带有一些触摸事件模拟。在 Android 上的 Chrome 中似乎是一个问题。

这是一个例子: jsFiddle

4

2 回答 2

4

Chrome for Android 中存在一个错误,其中 touches 和 changedTouches 数组无法正确维护自己的唯一标识符,除非您应用event.preventDefault()touchmove 或 touchstart 事件。

此错误影响 Ice Cream Sandwich 和 Jelly Bean 中的 Android 版 Chrome,并且一年多以来仍未解决。因此,第一张海报是正确的,您应该依赖touches[i].identifieror changedTouches[i].identifier,请记住,您必须调用event.preventDefault()touchmove 或 touchstart 才能使这些标识符正确保留。

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

于 2012-10-09T20:58:06.563 回答
3

TouchLists 中的触摸顺序不能保证保持一致。你应该依赖于touch.identifier。请参阅触摸事件规范

于 2012-07-06T06:14:54.910 回答