科尔多瓦 - 'touchmove'活动不会马上开火

时间:2016-02-25 06:55:28

标签: javascript html5 cordova events touchmove

我有这个简单的代码:

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'并且因为延迟而使它看起来很丑。

这是一个距离问题,而不是时间问题。

1 个答案:

答案 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

此外,这里有关于触摸事件的精彩阅读:

https://www.w3.org/TR/touch-events/#dfn-touchmove

相关问题