Как отключить резиновую ленту в веб-приложения iOS?

Это:

$('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;
        }
}
27
задан Mark 2 September 2015 в 15:06
поделиться