【问题标题】:Preventing TouchCancel events in Android Cordova Application防止 Android Cordova 应用程序中的 TouchCancel 事件
【发布时间】:2014-09-13 06:16:27
【问题描述】:

我正在开发的一个 Android 应用依赖于来自用户的一系列可能很长的 touchmove 事件。其中一些 touchmove 事件不会触发太多计算,但有些会触发。看来我被this feature of the Android WebKit咬了 如果 touchmove 处理程序在约 200 毫秒内没有返回,将触发 touchcancel 事件。根据this response on that bug report

1:对于针对移动设备优化的网站(具有宽度=设备宽度视口的网站),您可以依赖 总是得到不间断的触摸事件。所以触摸重的网站应该使用移动设备 视口表明它们被设计为在移动设备上运行良好。

不幸的是,这似乎对我不起作用。应用程序的受影响部分是具有以下视口设置的 HTML 页面:

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, 
minimum-scale=1, width=device-width, target-densitydpi=device-dpi" />

使用该设置,当 touchmove 事件花费的时间过长时,我会看到 touchcancel 事件被触发。我试图让 touchmove 事件更快,但提高速度,所以这个问题不会经常出现,这不是一个万无一失的解决方案。有什么方法可以防止触摸取消事件,或者至少可以解决它们?

非常感谢!

【问题讨论】:

  • 这个 touchcancel 事情让我抓狂:/
  • 我遇到了同样的问题。你找到解决这个问题的方法了吗?
  • 不,我从未找到解决此问题的方法。

标签: javascript android cordova


【解决方案1】:

如果其他人遇到此问题,here's a small jQuery extension 将解释如何处理 pointercanceltouchcancel 事件。

基本上,尝试使用指针事件,您将能够通过简单地使用值为nonetouch-action CSS 属性来阻止pointercancel

如果您确实必须使用旧的 touch 事件,则必须在 touchmove 事件中实现 event.preventDefault(),这将阻止触发 touchcancel,但也会完全禁用浏览器处理任何默认操作,例如平移或单击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多