W Safari na iOS 7, w jaki sposób odróżniać zdarzenia popstate przez przesuwanie krawędzi od przycisków wstecz / wstecz?

W Safari na iOS 7 istnieją teraz dwa sposoby nawigacji wstecz / do przodu - za pomocą tradycyjnych strzałek przycisków wstecz / do przodu na dole lub przesuwając od krawędzi ekranu. Używam animacji do przejścia między stronami w mojej aplikacji ajaxowej, ale nie chcę uruchamiać tego przejścia, jeśli użytkownicy nawigują za pomocą przesunięcia krawędzi, ponieważ jest to animacja.

Jednak obiekty zdarzeń popstate wydają się być identyczne dla obu typów nawigacji - czy jest jakiś sposób na odróżnienie tych dwóch typów nawigacji użytkownika, abyśmy mogli odpowiednio zareagować?

AKTUALIZACJA: Udało mi się użyć (co wydaje się być) błędu w Safari w iOS7, aby poprawnie wykryć dotknięcie przycisku przewijania krawędzi w stosunku do przycisku wstecz. Błąd polega na tym, że zdarzenie dotknięcia nie jest wyzwalane (aż do następnego zdarzenia dotyku) podczas korzystania z przesunięcia krawędzi (ale touchstart i touchmove są). Więc ustawiłempowinienAnimate flag i wyłącz go w touchmove - wtedy, jeśli flaga jest wyłączona i pojawi się popstate, wiem, że to przesuwanie krawędzi.

Jest to poprawne w 99% przypadków - jedyny czas, w którym może potencjalnie zawieść, gdy użytkownik przeskakuje częściowo i częściowo, a następnie puszcza i pozwala bieżącej stronie wskoczyć na miejsce (w tym momencie moja flaga nadal byłaby wyłączona) a następnie naciska przycisk Wstecz (który nie uruchamia zdarzeń dotykowych). Aby poradzić sobie z tym ostatnim przypadkiem, ustawiłem timer na touchmove, aby ponownie włączyć flagę po 50ms.

Tak, jest to „brudne”, ale na razie dostaje to, czego chcę w prawie każdym przypadku, więc wszystko jest w porządku - dopóki Apple nie naprawi błędu, ale mam nadzieję, że dostarczą również wskaźnik w obiekcie zdarzenia popstate, który nam mówi jaki to jest rodzaj nawigacji.

questionAnswers(1)

yourAnswerToTheQuestion