I'm working on an iPad-based web app, and need to prevent overscrolling so that it seems less like a web page. I'm currently using this to freeze the viewport and disable overscroll:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
This works great to disable overscroll but my app has several scrollable divs, and the above code prevents them from scrolling.
I'm targeting iOS 5 and above only so I've avoided hacky solutions like iScroll. Instead I'm using this CSS for my scrollable divs:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
This works without the document overscroll script, but doesn't solve the div scrolling problem.
Without a jQuery plugin, is there any way to use the overscroll fix but exempt my $('.scrollable') divs?
EDIT:
I found something that's a decent solution:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
The viewport still moves when you scroll past the beginning or end of the div. I'd like to find a way to disable that as well.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…