Это:
$('body').on('touchmove', function(e) { e.preventDefault(); });
Работает, но отключит прокрутку по всей странице, что далеко не идеально.
Это:
$('*').on('touchstart', function(e){
var element = $(this).get(0);
if ( element.scrollTop <= 0 ) element.scrollTop = 1;
if ( element.scrollTop + element.offsetHeight >= element.scrollHeight ) element.scrollTop = element.scrollHeight - element.offsetHeight - 1;
});
Работает на страницах с областью прокрутки. Однако, когда нет ничего, чтобы прокрутить, он снова покажет резиновую полосу.
Итак, мой вопрос:
Как вы можете отключить эффект резиновой ленты и по-прежнему удерживать области -webkit-overflow-scrolling
прокручиваемыми?
[Обновление]
Лучшее решение
Отключить прокрутку всех незаметных элементов, таких как панель вкладок или панель навигации.
anElement.addEventListener('touchmove', function( event ){ event.preventDefault() };
Прикрепите обработчик прокрутки к прокручиваемым элементам, таким как основной контент.
anElement.addEventListener('touchstart', function( event ){
if( this.scrollTop === 0 ) {
this.scrollTop += 1;
} else if( this.scrollTop + this.offsetHeight >= this.scrollHeight ) {
this.scrollTop -= 1;
}
}