0

有很多片段可以阻止 iPad 上的橡皮筋,如下所示:

document.body.addEventListener('touchmove',function(event){ event.preventDefault(); },false);

但是,这是否会阻止所有溢出的 div 也滚动?

有没有办法只用橡皮筋将页面(正文)放在顶部,同时仍然允许溢出滚动的 div 这样做?

4

1 回答 1

1

当用户从 div 的最底部或最顶部滚动时,似乎会出现整个页面的橡皮筋。我编写的代码检查用户是否确实处于这些极端之一,如果是,则阻止滚动动作在这些方向上发生。

elem.bind("touchstart", function( e )
{
    xStart = e.originalEvent.changedTouches[0].screenX;
    yStart = e.originalEvent.changedTouches[0].screenY;
});

elem.bind("touchmove", function( e )
{
    var xMovement = e.originalEvent.changedTouches[0].screenX - xStart;
    var yMovement = e.originalEvent.changedTouches[0].screenY - yStart;

    if( elem.scrollTop() == (elem[0].scrollHeight - elem[0].clientHeight) && yMovement < 0 )
    {
        e.preventDefault();
    }
    else if( elem.scrollTop() == 0 && yMovement > 0 )
    {
        e.preventDefault();
    }
    e.stopPropagation();
});

更新:包括工作 jsfiddle 演示链接:http: //jsfiddle.net/qQHrM/1/

于 2013-09-03T15:19:49.400 回答