防止Android Cordova应用程序中的TouchCancel事件

时间:2014-09-13 06:16:28

标签: javascript android cordova

我正在开发的Android应用程序依赖于来自用户的一系列潜在的touchmove事件。其中一些触摸移动事件不会引发太多计算,但有些事情会发生。好像我被this feature of the Android WebKit咬了  如果touchmove处理程序在~200ms内没有返回,将触发touchcancel事件。根据{{​​3}}

  

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事件,或至少解决它们?

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

基本上,尝试使用指针事件,只需使用值pointercancel的{​​{1}} CSS属性即可阻止touch-action

如果你真的必须使用传统的触摸事件,那么你必须在touchmove事件中实现none,这样可以防止touchcancel被触发,但它也会完全禁用浏览器处理任何默认操作,如平移或点击。