Подтвердить что ты не робот

Изменения JavaScript DOM в touchmove задерживаются до тех пор, пока прокрутка не закончится на мобильном Safari

В мобильном сафари, в процессе обработки touchmove для элемента, я изменяю className этого элемента. К сожалению, визуальное изменение не происходит во время прокрутки пользователя или до самого конца инерциального прокрутки.

Что я могу сделать, чтобы визуально принять className?

Дополнительно: По-видимому, это не ограничивается изменениями className, но, похоже, какое-либо изменение в DOM, например innerHTML и style.

4b9b3361

Ответ 1

Это к сожалению. Safari iOS будет помещать в очередь все манипуляции с DOM до конца прокрутки или жеста. Эффективно DOM заморожен во время прокрутки.

Я думал, что смогу найти ссылку на эту страницу на странице разработчика Apple, но я могу найти эту ссылку только для jQueryMobile: http://jquerymobile.com/test/docs/api/events.html.

Обратите внимание, что iOS-устройства блокируют DOM-манипуляцию во время прокрутки, очереди их применять, когда свиток завершается. В настоящее время мы изучаем способы разрешения манипуляций DOM до начала прокрутки

Надеюсь, это поможет!

Ответ 2

Я действительно построил этот сайт, и да, чтобы обойти это ограничение, не прокручивать сайт, используя встроенные функции браузера, а подделывать его. JS слушает прокрутку событий на колесиках и клавиатуре и подгоняет свойство css top основного контейнера к собственному "scrollTop". Полоса прокрутки справа - это, конечно же, обычай JS. В этом случае он синхронизируется с тем же внутренним значением scrollTop.

Весь сайт - это всего лишь одна большая анимация, причем основной временной шкалой является ее позиция scrollTop, и все вспомогательные анимации запускаются в определенное время. JS не минимизирован, поэтому загляните в файл ScrollAnimator.js, все там.

Ответ 3

Просто измените положение на -webkit-sticky. Не устанавливайте верх, чтобы он выглядел как обычный элемент, но выполняет как фиксированный элемент. И вы можете быстро обновить свой стиль, кроме позиции.