В iOS 7 Safari, как вы отличаете события popstate с помощью крайнего удара по сравнению с кнопками назад / вперед?

В iOS 7 Safari теперь есть два способа навигации назад / вперед - с помощью традиционных кнопок со стрелками назад / вперед в нижней части экрана или проведением пальцем от края экрана. Я использую анимацию для перехода между страницами в моем приложении ajax, но я не хочу запускать этот переход, если пользователи перемещаются по краю, потому что это сама анимация.

Тем не менее, объекты событий popstate кажутся идентичными для обоих типов навигации - есть ли какой-либо способ провести различие между этими двумя типами навигации пользователя, чтобы мы могли реагировать соответствующим образом?

ОБНОВИТЬ: Я смог использовать (как представляется,) ошибку в iOS7 Safari для правильного определения удара по краю и нажатия кнопки назад. Ошибка заключается в том, что событие касания не запускается (до следующего события касания) при использовании прокрутки краев (но касание запуска и касание перемещаются). Итак, я установилshouldAnimate пометьте и отключите его на touchmove - тогда, если флаг отключен, и происходит всплывающее сообщение, я знаю, что это краевой удар.

Это правильно в 99% случаев. Единственный случай, когда он может потерпеть неудачу, это когда пользователь частично проводит пальцем, а затем отпускает его и позволяет текущей странице снова встать на место (в этот момент мой флаг все равно будет отключен). и затем нажимает кнопку «назад» (которая не запускает сенсорные события). Чтобы справиться с этим последним [крайним] случаем, я установил таймер на сенсорное движение, чтобы снова включить флаг через 50 мс.

Да, он «грязный», но сейчас он дает мне то, что я хочу почти в каждом случае, так что я в порядке с этим - пока Apple не исправит ошибку, но, надеюсь, они также предоставят индикатор в объекте события popstate, который говорит нам что это за навигация.

Ответы на вопрос(1)

Ваш ответ на вопрос