0

我创建了一个响应式站点,用户可以在其主屏幕上添加书签。在平板电脑和手机上,如果当用户滚动到页面顶部或页面底部时屏幕不会执行该操作,如果您向下滚动太远或向上滚动太多,您会看到一点页面后面是灰色的,它会弹回来。

我知道在正文上使用“preventDefault”会发生这种情况,但是现在这样做会阻止用户滚动。

这是javascript:

$(document).ready(function(){
  document.ontouchmove = function(e){e.preventDefault();}
});

这是html调用:

<body ontouchmove="touchMove(event)"> 
4

1 回答 1

0

我建议你捕获事件并且只调用 preventDefault 是它在某个视口/滚动顶部位置..(将尝试很快添加代码)。

这应该可以帮助您获得当前文档的滚动顶部位置

function getScrollTop(){
    if(typeof pageYOffset!= 'undefined'){
        //most browsers
        return pageYOffset;
    }
    else{
        var B= document.body; //IE 'quirks'
        var D= document.documentElement; //IE with doctype
        D= (D.clientHeight)? D: B;
        return D.scrollTop;
    }
}

然后仅当 scrollTop 位于顶部时才调用 preventDefault ...

$(document).ready(function(){
      document.ontouchmove = function(e){ if (getScrollTop() != document.scrollTop)      
          {
             e.preventDefault();
          }
     }
});
于 2013-05-27T16:00:39.200 回答