iOS Safari — как отключить избыточную прокрутку, но разрешить нормальную прокрутку прокручиваемых элементов div?

Я работаю над веб-приложением для iPad-, и мне нужно предотвратить чрезмерную прокрутку, чтобы она казалась меньше. как веб-страница. В настоящее время я использую это, чтобы заморозить окно просмотра и отключить избыточную прокрутку :

document.body.addEventListener('touchmove',function(e){
      e.preventDefault();
  });

. Это прекрасно работает для отключения избыточной прокрутки, но в моем приложении есть несколько прокручиваемых элементов div, иприведенный выше код предотвращает их прокрутку.

Я ориентируюсь только на iOS 5 и выше, поэтому избегаю хакерских решений вроде iScroll. Вместо этого я использую этот CSS для своих прокручиваемых блоков div :

.scrollable {
    -webkit-overflow-scrolling: touch;
    overflow-y:auto;
}

. Это работает без скрипта прокрутки документа, но не решает проблему прокрутки блока.

Без подключаемого модуля jQuery,можно ли как-то использовать исправление чрезмерной прокрутки, но исключить мои элементы div $('.scrollable')?

РЕДАКТИРОВАТЬ:

Я нашел достойное решение:

 // Disable overscroll / viewport moving on everything but scrollable divs
 $('body').on('touchmove', function (e) {
         if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
 });

Окно просмотра все еще перемещается, когда вы прокручиваете начало или конец элемента div. Я также хотел бы найти способ отключить это.

98
задан mattjegan 12 January 2018 в 05:29
поделиться