【发布时间】:2013-06-20 10:40:23
【问题描述】:
我正在制作一个使用 JavaScript 触摸事件的移动网站。在 iOS Safari 和 Android 版 Chrome 中一切正常,但现有的 Android 浏览器(4.1.2 版)给我带来了麻烦。
在触摸过程中,touchstart 和 touchmove 事件按预期调用。但是,touchmove 处理程序执行的操作之一似乎触发了过早的touchcancel 事件。 (我不确定这是否重要,但触发touchcancel 的动作是修改SVG 对象的viewBox 属性。)如果我注释掉这个动作,触摸过程会正常进行(即完成touchmove 到 touchend)。
我所有的触摸处理程序都调用了preventDefault() 函数,所以问题不是这个错误中描述的问题:https://code.google.com/p/android/issues/detail?id=19827。
我读到有很多关于何时调用touchcancel 的inconsistency among browsers。库存的 Android 浏览器是唯一对我有问题的浏览器。
那里有解决方法吗?例如,我可以完全禁用touchcancel 事件吗?我的另一个想法是让touchcancel 处理程序以编程方式触发另一个touchstart/touchmove 事件,但我并没有走得太远。任何想法将不胜感激。
【问题讨论】:
-
啊!我认为这个问题现在已经迁移到 Chrome 浏览器了!它出现在第 28 版中。请参阅 code.google.com/p/chromium/issues/detail?id=260732。
-
另见这篇文章,似乎相关:stackoverflow.com/questions/15944197/…
-
我现在在 Chrome 浏览器中遇到了这个问题,干扰了 Hammer.js 的使用。有谁知道如何解决这个问题?
-
供将来参考,这里的答案完美无缺:stackoverflow.com/questions/10367854/html5-android-touchcancel
标签: javascript android touch android-browser