jquery ios html5 google-chrome pushstate

jquery - Chrome en iOS; atrás/adelante no funciona con history.pushState?



html5 google-chrome (1)

iOS tiene algunos errores con la API de historial de HTML5.

Has probado:

window.addEventListener("popstate", function(e) { window.location.href = location.href; });

Este complemento puede ser de alguna utilidad (incluso para la lectura en segundo plano) History.js . Resuelve los problemas de compatibilidad entre navegadores y también proporciona una opción de hash HTML4 opcional si lo desea

Tengo una página web que utiliza history.pushState con identificadores de fragmentos (es decir, #Heading1 ) y el método animate de jQuery para navegar dentro del documento.

Así es como navego a una ubicación en el documento:

$(''nav a'').click(function(e){ e.preventDefault(); var href = $(this).attr(''href''); history.pushState(null, null, href); $(''#address'').val(location.pathname + href); $(''html, body'').animate({ ''scrollTop'': $(href).offset().top + ''px'' });

Al usar Google Chrome en iOS, la dirección se actualiza como se esperaba y la animación de desplazamiento funciona bien, pero los botones de avance / avance no van a las etiquetas identificadas.

Debo tener en cuenta que al usar los botones de avance / retroceso, se cambia la URL en la barra de direcciones. Simplemente no va a la etiqueta identificada.

Solo he visto este problema usando Google Chrome en iOS; Tanto iPhone como iPad.

He creado una pluma en CodePen con un subconjunto de mi código que debería demostrar el problema: http://codepen.io/Ghodmode/pen/YqKGga

Actualizar:
He actualizado mi pluma para que sea un poco más fácil de probar en un iPhone / iPad. Probablemente también es mejor utilizar la vista de depuración: http://s.codepen.io/Ghodmode/debug/YqKGga

Actualización 2:
He creado otra página en CodePen que debería demostrar el problema. Esta vez, sin jQuery: http://s.codepen.io/Ghodmode/debug/jqOqpq

Todavía no he podido probar esto porque no tengo acceso directo a iPhone / iPad, pero realmente no creo que el problema tenga nada que ver con jQuery.

Funciona bien en:

  • Safari en iPhone / iPad
  • Google Chrome en Android
  • Mozilla Firefox en Android
  • Google Chrome en Windows
  • Mozilla Firefox en Windows
  • Internet Explorer en Windows

Probablemente debería tener en cuenta que personalmente no tengo ningún dispositivo iOS para probar esto, pero sí tengo un probador confiable que me envía videos y capturas de pantalla de cualquier problema.

Dado que la animación funciona como se esperaba, no parece ser un problema de jQuery.