如何在JavaScript中强制停止touchmove?

lun

这就是我创造的。

var foo = document.getElementsByTagName('footer')[0],
    startX = 0,
    startY = 0,
    finalX = 0,
    finalY = 0;

function handleTouchStart(e){
    var touch = e.touches[0] || e.changedTouches[0];

    startX = touch.pageX;
    startY = touch.pageY;
}

function handleTouchMove(e){
    var touch = e.touches[0] || e.changedTouches[0],
        touchX = startX - touch.pageX;

    finalX += (touchX / 6);

    foo.style.marginLeft = finalX + 'px';

    if(Math.abs(touchX) >= 50){
        e.preventDefault(); // not working
        // stop touchmove if possible (So, touchend will be triggered)
        // animate in touchend
    }
}

function handleTouchEnd(e){
    var touch = e.touches[0] || e.changedTouches[0],
        getTouch = startX - touch.pageX;

    if(getTouch < 0){
        console.log('Swiping right: ' + getTouch);
    } else {
        console.log('Swiping left: ' + getTouch);
    }
}

foo.addEventListener('touchstart', handleTouchStart, false);
foo.addEventListener('touchend', handleTouchEnd, false);
foo.addEventListener('touchmove', handleTouchMove, false);

基本上,我只想停止touchmove,以便可以为元素设置动画。我会搜索我的问题,但不幸的是,我没有任何解决方案。

注意:我没有使用jQuery,因为我正在创建基于性能的应用程序。

任何建议/帮助将不胜感激。谢谢!

韦斯

您不能强制touchEnd事件-这是默认的浏览器行为。但是,您可以通过检查touchXfirst的偏移量并在超出阈值的情况下采取适当的措施来解决此问题:

function handleTouchMove(e){
    var touch = e.touches[0] || e.changedTouches[0],
        touchX = startX - touch.pageX;

    if(Math.abs(touchX) >= 50){
        e.preventDefault();
        console.log('breaking');
        handleTouchEnd(e);
        return;
    }

    ...

https://jsfiddle.net/mL76a9pe/1/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在JavaScript中停止递归函数?

来自分类Dev

如何在JavaScript中强制字符串中的空格

来自分类Dev

在Windows 10中如何在不使用鼠标的情况下强制停止程序?

来自分类Dev

触发后,如何在setTimeout中停止Javascript函数调用?

来自分类Dev

使用axios时如何在JavaScript中停止无限循环?

来自分类Dev

如何在Node.js / Javascript中停止无限循环

来自分类Dev

触发后,如何在setTimeout中停止Javascript函数调用?

来自分类Dev

如何在JavaScript中停止自身功能的循环?

来自分类Dev

如何在javascript中停止计时器?

来自分类Dev

如何在繁重的负载下强制停止长的postgres查询?

来自分类Dev

如何强制任务停止?

来自分类Dev

如何强制任务停止?

来自分类Dev

在Android中强制停止

来自分类Dev

从dom中删除任何元素后,Touchmove事件停止触发

来自分类Dev

如何在PySide中强制重画?

来自分类Dev

如何在PHP中强制foreach重置

来自分类Dev

如何在ActionFilterAttribute中强制请求失败

来自分类Dev

如何在Symfony中强制注销用户?

来自分类Dev

如何在MVVM中强制更新UI?

来自分类Dev

如何在Grails GORM中强制冲洗

来自分类Dev

如何在gnuplot中强制颜色范围

来自分类Dev

如何在元素中强制状态悬停

来自分类Dev

如何在DataGridView中强制“刷新”

来自分类Dev

如何在coffeeScript中强制使用“ this”?

来自分类Dev

如何在Symfony中强制注销用户?

来自分类Dev

如何在Xenial中强制设置DPI?

来自分类Dev

如何在Datatables中强制.change()事件?

来自分类Dev

如何在Java中强制关闭窗口?

来自分类Dev

如何在iframe中强制调整大小?