【问题标题】:html5/android touchcancelhtml5/android 触摸取消
【发布时间】:2026-02-16 21:30:01
【问题描述】:

我尝试在 html5 for mobile 上开发一个界面。 我尝试使用 touchstart/touchmove/touchend/touchcancel 跟随运动。 但是当我尝试跟随运动时,我总是很快就会有 au 'touchcancel' 并且没有更多的 touchmove ......

当我尝试这个时:http://miniapps.co.uk/code/touchcancel/ 它工作得很好,我没有任何问题。

但我认为问题来自干扰我的画布的网络浏览器的运动。 你知道我可以解决这个问题吗?

// 我试图解释更多: - 这是我的测试代码:http://frys.free.fr/mNaissance/test.html 这是我尝试使用手机制作的“拼图”拼图代码。 我有一个“日志” div hunder 文本。 当我在灰色画布上做“touchmove”时,我有一个非常快的“touchcancel”,不再有“touchmove” 是不是更清楚了?对不起我的英语不好!

感谢您的帮助

【问题讨论】:

  • 我不知道你在说什么。请更准确。并且可能添加不起作用的代码,或更多示例来解释您尝试过的内容
  • 我刚刚遇到了我认为是同一个问题的问题:问题是“Android 浏览器有时会无缘无故地触发一个 touchcancel 事件,为什么?” // 同样的代码在 iOS 设备上运行良好
  • 您的链接无效,但这个 SO 问题可能有一些线索:*.com/questions/15944197

标签: android html


【解决方案1】:

我相信我找到了原因 - Android 浏览器(以及适用于 Android 4.0+ 的 Chrome)认为您正在尝试滚动,因此它会触发 touchcancel 事件。你应该做的是

event.preventDefault();

在您正在捕获的 touchmove 事件上。

【讨论】:

  • 我的案例是相关的,但使用它并没有帮助。对于那些可能有与 OP 模糊相关的问题的人,请参阅这个 SO 问题:*.com/questions/15944197
  • 出于同样的原因,此解决方案现在也适用于桌面版 Chrome。
  • 这与Android浏览器无关,这是设计使然,因为浏览器必须在所有情况下自动接管诸如平移和缩放之类的操作。因此,浏览器会在以下情况下触发touchcancel事件它正在接管touchmove 事件,以防止对同一事件执行 2 个不同的操作(这会产生可怕的结果)