我正在研究基于iPad的网络应用程序,并且需要防止过度滚动,以使其看起来不像网页。我目前使用这种冻结视口并禁用反弹时:iOS Safari - 如何禁用overscroll,但允许可滚动的div正常滚动?
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插件,有没有办法使用反弹时修复,但免除我的$(“滚动”)的div?
编辑:
我发现的东西,是一个不错的解决方案:
// Disable overscroll/viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
当你滚过div的开头或结尾的视域依然继续。我想找到一种方法来禁用它。
尝试了你的最后一个也没有工作要么 – 2012-10-19 11:44:12
我可以保持视口不移动,当你滚动过去的div的末尾,明确捕获滚动div的父级滚动事件,而不是让它实际上滚动。如果您使用jQuery Mobile的很有道理在页面级别,像这样做:。 $(“DIV [数据角色=‘页面’]”)上(“滚动”,功能(E){É .preventDefault();}); – 2013-02-18 20:47:35
https://github.com/lazd/iNoBounce创建奇迹 – 2015-04-25 08:06:52