【发布时间】:2013-04-03 09:03:33
【问题描述】:
我正在尝试构建一个网页,它可以感知用户的触摸并沿着画布拖动和对象。
所以我正在做这样的事情:
var touchStart = function(e) {
e.preventDefault();
// Do stuff
}
var touchMove = function(e) {
e.preventDefault();
console.log("Touch move");
// Move objs
}
var touchEnd = function(e) {
e.preventDefault();
console.log("Touch start!");
// clean up stuff
}
var touchCancel = function(e) {
e.preventDefault();
// Oh NO touch cancel!
console.log("Touch cancel!");
}
bindElemOrig.addEventListener('touchstart', touchStart, false);
bindElemOrig.addEventListener('touchmove', touchStart, false);
bindElemOrig.addEventListener('touchend', touchStart, false);
bindElemOrig.addEventListener('touchcancel', touchStart, false);
在某些时候它工作正常。
问题在于,一旦我加载了太多 obj,在我看来 touchmove 响应时间过长,并且 touchcancel 会被触发。问题是,一旦 touchcancel 被触发,我就不再收到 touchmove 的任何事件,并且我无法再感知到移动。
有人遇到过这个问题吗?我知道 Android 中的错误,您必须调用 preventDefault (touchend event in ios webkit not firing?) 但在这种情况下,由于内存负担,它似乎无法正常工作。
谢谢!
【问题讨论】:
-
我在 Android 2.3 上遇到了同样的问题。 Android 4+ 好像没问题。你在这个话题上有什么发现吗?
-
@dioslaska 垫片@github.com/TNT-RoX/android-swipe-shim
-
供将来参考,这里的答案完美无缺:stackoverflow.com/questions/10367854/html5-android-touchcancel
标签: javascript android jquery webkit touch