Estoy desarrollando una aplicación de Facebook que usa backbone.js 0.3.3 y estoy tratando de hacer que el botón Atrás funcione correctamente para los usuarios.Agregando estados de historial en una aplicación de Facebook backbone.js (en iframe)
Backbone guarda el estado a través del hash URL, que se utiliza para enrutar internamente. Por ejemplo, #home
cargará la página de inicio y #session
es otra página. El historial se guarda cuando esto ocurre fuera de un marco flotante, por lo que puede navegar correctamente utilizando el botón Atrás.
La navegación dentro del iframe no es el problema, y todos los enlaces funcionan, pero el navegador no guarda ningún historial.
La pregunta:
Las Facebook iframe puntos a http://app.example.com
, que es la aplicación de Backbone. ¿Cómo puedo hacer que el botón Atrás funcione para el usuario en la aplicación de Facebook? Puntos de bonificación para una solución existente que utiliza Backbone.
He examinado esta cuestión desde varios ángulos y no puedo encontrar una solución satisfactoria disponible en ninguna parte. Parece que muy pocas aplicaciones de Facebook usan backbone/dependen tanto de Javascript.
Creo que la solución es agregar estados de historial a la ventana principal del iframe, pero no sé cómo hacerlo. Historia HTML5? Algún tipo de API de Facebook? Incluso una solución parcial (para navegadores modernos) es preferible a la situación actual.
¿Ha comprobado si la url del iframe en realidad tiene el hash como '# home' durante la navegación del usuario? Porque en el iframe, Facebook secuestra una gran cantidad de JavaScript API, por lo que no estoy seguro de si se secuestra window.location. –
@Cat Chen: el atributo iframe 'src' está establecido en' javascript: "" ', y tengo problemas para encontrar una URL real para el iframe con la consola de desarrollo de Chrome (creo que la política entre dominios es la culpable) . – Wylie
Ya veo. Tengo una explicación (ver mi respuesta), pero aún no tengo una solución. –