我正在制作一个使用 JavaScript 触摸事件的移动网站。在 iOS Safari 和 Android 版 Chrome 中一切正常,但现有的 Android 浏览器(4.1.2 版)给我带来了麻烦。
在触摸过程中,touchstart
和touchmove
事件按预期调用。但是,touchmove
处理程序执行的其中一项操作似乎触发了过早的touchcancel
事件。(我不确定这是否重要,但触发 的动作touchcancel
是修改 SVG 对象的viewBox
属性。)如果我注释掉这个动作,触摸过程会正常进行(即完成touchmove
through to touchend
)。
我所有的触摸处理程序都会调用该preventDefault()
函数,因此问题不是此错误中描述的问题:https ://code.google.com/p/android/issues/detail?id=19827 。
我读过浏览器之间在何时调用方面存在很多不一致。touchcancel
库存的 Android 浏览器是唯一对我有问题的浏览器。
那里有解决方法吗?例如,有没有我可以完全禁用该touchcancel
事件?我的另一个想法是让touchcancel
处理程序以编程方式触发另一个touchstart
/touchmove
事件,但我并没有走得太远。任何想法,将不胜感激。