No iOS 7 Safari, como você diferencia os eventos popstate via furto de borda versus os botões voltar / fwd?

No iOS 7 Safari, agora existem duas maneiras de navegar para trás / para frente - usando as setas tradicionais de botão Voltar / Avançar na parte inferior ou deslizando a partir da borda da tela. Estou usando uma animação para fazer a transição entre as páginas do meu aplicativo ajax, mas não quero disparar essa transição se os usuários estiverem navegando pelo deslizamento de borda, porque essa é uma animação em si.

No entanto, os objetos de evento popstate parecem ser idênticos para ambos os tipos de navegação - existe alguma maneira de diferenciar entre esses dois tipos de navegações de usuário para que possamos responder de acordo?

ATUALIZAR: Consegui usar (o que parece ser) um bug no Safari do iOS7 para detectar corretamente o toque de borda e o botão Voltar. O bug é que o evento touchend não é acionado (até o próximo evento de toque) ao usar o furto de borda (mas o touchstart e o touchmove são). Então eu defini umdeveAnimate sinalizar e desativá-lo no touchmove - então, se o sinalizador estiver desabilitado e o popstate ocorrer, eu sei que é um golpe de borda.

Está correto 99% do tempo - a única vez em que ele poderia falhar é quando um usuário corta a parte parcialmente e, em seguida, solta e deixa a página atual voltar ao lugar (nesse ponto, meu sinalizador ainda estaria desabilitado) e, em seguida, toca no botão Voltar (que não dispara eventos de toque). Para lidar com esse último caso [borda], configurei um cronômetro em touchmove para reativar o sinalizador após 50ms.

Sim, é "sujo", mas por enquanto ele me dá o que eu quero em quase todos os casos, então estou bem com ele - até que a Apple conserte o bug, mas espero que eles também forneçam um indicador no objeto de evento popstate que nos diz que tipo de navegação é.

questionAnswers(1)

yourAnswerToTheQuestion