preventDefault阻止滚动

时间:2013-05-27 15:46:26

标签: javascript

我创建了一个响应式网站,用户可以将其添加到主屏幕。在平板电脑和手机上,如果当用户滚动到页面顶部或页面底部时屏幕不会那么做,如果你滚动得太远或太远,你会看到一点在页面后面的灰色和它快速回来。

我知道在身体上使用'preventDefault'会使这种情况发生,但是现在这样做会阻止用户滚动。

这是javascript:

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

这是html调用:

<body ontouchmove="touchMove(event)"> 

1 个答案:

答案 0 :(得分:0)

我建议您捕获事件并且只调用preventDefault它是在某个视口/ scrollTop位置..(将尽快尝试添加代码)。

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

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();
          }
     }
});