禁用移动设备上的垂直滚动

时间:2015-06-04 16:26:44

标签: javascript html css jquery-mobile mobile

我正在使用touchmove中的touchstarttouchendJQuery Mobile个函数。我尝试在touchstart时禁用垂直滚动,并在触发touchend时启用它。我尝试了一些事情:

  • overflow: hidden添加到正文这适用于Chrome浏览器,但不适用于firefox android

  • touchstart事件被触发并touched被解雇时,将滚动事件绑定和取消绑定到正文 - 根本不起作用(我确定我做错了)。以下是代码。

代码:

$(document).on("touchstart", ".amount-container", function(event){
    $(".notify-cart").addClass("show");
    if(event.touches.length == event.changedTouches.length) {
        monitor = {
            x: event.touches[0].clientX,
            y: event.touches[0].clientY
        };
    }
}).on("touchend", ".amount-container", function(){
    $(".notify-cart").removeClass("show");
    $("body").removeClass("overflowhide");
    monitor = {};
}).on("touchmove mousemove", ".amount-container", function(event){
    if(Math.abs(event.changedTouches[0].clientX - monitor.x) > Math.abs(event.changedTouches[0].clientY - monitor.y)) {

    }
    else{
        event.preventDefault();
    }
});
// To Prevent Scrolling while Swipe/touchmove
var touchScroll = function( event ) {
    event.preventDefault();
};

我也尝试过其他一些东西。在Firefox中没有任何效果。有没有更好的方法来解决这个问题。如果您还有其他需要,请告诉我。

1 个答案:

答案 0 :(得分:0)

我不肯定这会起作用,但请尝试替换

var touchScroll = function( event ) {
    event.preventDefault();
};

document.body.addEventListener('touchstart', function(e){e.preventDefault();
});