我正在开发的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事件,或至少解决它们?
非常感谢!
答案 0 :(得分:0)
如果其他人遇到此问题,here's a small jQuery extension解释了如何处理pointercancel
和touchcancel
事件。
基本上,尝试使用指针事件,只需使用值pointercancel
的{{1}} CSS属性即可阻止touch-action
如果你真的必须使用传统的触摸事件,那么你必须在touchmove事件中实现none
,这样可以防止touchcancel被触发,但它也会完全禁用浏览器处理任何默认操作,如平移或点击。