Я знаю, что прошло много времени с тех пор, как вы задали вопрос, но у меня возникла та же проблема, и я использовал ваш код в качестве основы для решения проблемы. Так что спасибо за вдохновение.
(Javascript + jQuery)
<script>
var handleMove = function (e) {
var scrollable = false;
var items = $(e.target).parents();
$(items).each(function(i,o) {
if($(o).hasClass("scrollable")) {
scrollable = true;
}
});
if(!scrollable)
e.preventDefault();
};
document.addEventListener('touchmove', handleMove, true);
</script>
Или менее многословно, но в конечном итоге тот же результат (кредит Дж. Гриффитс):
<script>
var handleMove = function (e) {
if($(e.target).closest('.scrollable').length == 0) { e.preventDefault(); }
}
document.addEventListener('touchmove', handleMove, true);
</script>
Вы также должны включить следующий тег META.
<meta name="viewport" content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=no;" />