我有这个简单的代码:
document.addEventListener('touchmove', onDocumentTouchMove, false);
function onDocumentTouchMove(event)
{
for(var i = 0; i < event.touches.length; i++)
{
clickX[i] = event.touches[i].pageX;
clickY[i] = event.touches[i].pageY;
}
}
我要做的是让事件'touchmove'立即开启,但它需要通过特定数量的像素,比如在触发之前的阈值。
在我的情况下,似乎我必须在发射之前将手指移动大约半英寸。有没有办法让它在没有门槛的情况下开火?
我正试图在我的应用程序中拖动一个简单的框,但它似乎在检查不同的事件之前它识别出'touchmove'并且因为延迟而使它看起来很丑。
这是一个距离问题,而不是时间问题。
答案 0 :(得分:1)
我能够通过添加:
来解决这个问题event.preventDefault();
在我的职能部门内:
onDocumentTouchStart(防止触发其他事件的延迟)
onDocumentTouchMove(阻止滚动)
document.addEventListener('touchstart', onDocumentTouchMove, false);
document.addEventListener('touchmove', onDocumentTouchMove, false);
function onDocumentTouchStart(event)
{
event.preventDefault(); //Allows firing of other events asap
for(var i = 0; i < event.touches.length; i++)
{
clickX[i] = event.touches[i].pageX;
clickY[i] = event.touches[i].pageY;
}
}
function onDocumentTouchMove(event)
{
event.preventDefault(); //Prevents Scrolling
for(var i = 0; i < event.touches.length; i++)
{
clickX[i] = event.touches[i].pageX;
clickY[i] = event.touches[i].pageY;
}
}
这个问题好几个月了!现在它在我的所有应用程序中运行得非常好! :d
此外,这里有关于触摸事件的精彩阅读: