我正在开发一个基于 iPad 的网络应用程序,并且需要防止过度滚动,使其看起来不像网页。我目前正在使用它来冻结视口并禁用过度滚动:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
这非常适合禁用过度滚动,但我的应用程序有几个可滚动的 div,并且上面的代码阻止它们滚动。
我只针对 iOS 5 及更高版本,所以我避免了像 iScroll 这样的 hacky 解决方案。相反,我将这个 CSS 用于我的可滚动 div:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
这在没有文档过度滚动脚本的情况下有效,但不能解决 div 滚动问题。
如果没有 jQuery 插件,有没有办法使用过度滚动修复但免除我的 $('.scrollable') div?
编辑:
我找到了一个不错的解决方案:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
当您滚动超过 div 的开头或结尾时,视口仍会移动。我也想找到一种方法来禁用它。