2008-08-27 11 views
9

Estoy escribiendo una aplicación de álbum de fotos simple usando ASP.NET Ajax.
La aplicación utiliza llamadas Async Ajax para precargar la siguiente foto del álbum, sin cambiar la URL en el navegador.¿Cómo mantener el historial del navegador sincronizado al usar Ajax?

El problema es que cuando el usuario hace clic en el botón Atrás en el navegador, la aplicación no vuelve a la foto anterior, sino que navega a la página de inicio de la aplicación.

¿Hay alguna manera de engañar al navegador para que agregue cada llamada Ajax al historial de navegación?

Respuesta

3

Muchos sitios web hacen uso de un iframe oculto a hacer esto, simplemente, actualizar el marco flotante con la nueva dirección URL, que se suma al historial de navegación. Entonces, todo lo que tiene que hacer es controlar cómo su aplicación reacciona a esos eventos de 'botón de retroceso': necesitará detectar el estado/ubicación del iframe o actualizar la página usando esa URL.

+0

Si entiendo eso correctamente, el iframe realmente enviará la solicitud que no es de Ajax al servidor. Eso sería una carga innecesaria para el servidor. Podría estar bien para sitios de poco tráfico, pero definitivamente no es una buena solución, SI la solicitud se lleva a cabo. –

0

La actualización 3.5 SP1 tiene soporte para el historial del navegador y el botón Atrás en ASP.NET ajax ahora.

0

Para todas las soluciones sobre el botón Atrás, ninguna de ellas es "automática". Con cada uno de ellos tendrá que hacer un trabajo para persistir en el estado de la página. Entonces, no, no hay una forma de "engañar" al navegador, pero hay algunas bibliotecas geniales que lo ayudan con el botón Atrás.

14

Actualización: ahora existe la API de historial de HTML5 (pushState, popState) que desaprueba la funcionalidad de HTML4 hashchange. History.js proporciona compatibilidad entre navegadores y una recuperación optionalhashchange para navegadores HTML4.

La respuesta a esta pregunta será más o menos lo mismo que mis respuestas a estas preguntas:

En resumen, que sin duda desea vea estos dos proyectos que explican todo el proceso de cambio y agregan ajax a la mezcla:

  • jQuery History (usando hash para administrar el estado de sus páginas y enlazar a los cambios para actualizar su página).

  • jQuery Ajaxy (extensión ajax de jQuery Historia, para permitir sitios web completos ajax mientras que ser completamente discreto y con gracia degradables).

1

Usted puede utilizar sencilla & ligera PathJS lib.

Ejemplo de uso:

Path.map("#/page1").to(function(){ 
    ... 
}); 

Path.map("#/page2").to(function(){ 
    ... 
}); 

Path.root("#/mainpage"); 
Path.listen(); 
Cuestiones relacionadas