2011-08-11 13 views
8
  1. Visitas del usuario Página A y hace clic varias veces, ajustando el estado de la página a medida que avanza.
  2. Página A la larga redirige el usuario a la página B botón
  3. El usuario hace clic atrás del navegador, ve una página en el navegador de nuevo

que necesitan para llevar a cabo alguna de las interfaces de limpieza en el paso 3.¿Cómo manejo la llegada del usuario a la página a través del botón de navegación hacia atrás?

Cómo Cómo capturo este evento en la Página A?

+2

Aquí hay una publicación similar que cubre el uso de jQuery y el botón Atrás: http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button –

Respuesta

1

Además de posiblemente configurar una cookie, no se puede debido a una restricción de seguridad del navegador. Una solución alternativa sería verificar si el usuario navega fuera de la página antes de la descarga o al momento de la descarga.

1

¿Sería posible en su escenario usar el hash URL para navegar a la página B y usar AJAX y jQuery para cargar la nueva página? Por lo tanto, el navegador no está saliendo de la página. Cuando el usuario navega hacia atrás, todo lo que harán será cambiar el hash de la URL. A continuación, podría capturar el evento hashchange para ver si el usuario ha navegado volver a la página A.

+0

Connel, me gusta la idea, pero creo que nuestra aplicación web será demasiado pesada para este método. Es una aplicación de comercio electrónico dentro de DotNetNuke con ASP.NET Web Forms –

+0

¡Ah, siempre vale la pena la sugerencia!¿Has probado la respuesta aceptada en la publicación que sugirió @Rionmonster? – Connell

+0

Todavía no, necesita algo de tiempo para analizar. Parece prometedor –

1

Voy a hacer algunas suposiciones para presentar una manera de hacer esto que no es totalmente dependiente de javascript:

  1. Notó en los comentarios otra respuesta que se trata de una aplicación ASP.NET. Voy a suponer que solo le importa el botón Atrás en el que se está presionando desde otra página en su aplicación ASP.NET.
  2. Usted controla el código del lado del servidor ejecutado en el código subyacente de ASP.NET tanto para la página en cuestión como para la (s) página (s) a las que tendrá que "dar marcha atrás".

¡Si ambas condiciones son ciertas, entonces debería poder usar un Session variable! Simplemente configure la página actual en una variable currPage mantenida por sesión en todas las páginas relacionadas. Luego, cuando la página se esté cargando, compruébalo y úsalo para ajustar la forma en que se muestra la página directamente o para escribir un valor en un campo/entrada/div oculto, que tu javascript puede leer y usar para reaccionar de forma adecuada.

Si va por la ruta JS de lectura y ejecución, querrá probar para asegurarse de que los eventos se activen correctamente en todos los navegadores después de un botón cargar desde atrás. Como se menciona en the link from Rionmonster, a veces los eventos de carga pueden no dispararse después de un botón de retroceso. Si ve problemas de esto, entonces use los trucos mencionados allí para evitarlo.

Este tipo de solución debería funcionar para cualquier aplicación web que emplee código del lado del servidor capaz de interactuar con las variables de sesión (por ejemplo, también funcionará para PHP, Python y muchos otros).

Nota: Existe la posibilidad de que esto no sea tan elegante como parece. En muchos casos, es posible que los navegadores no saquen una página nueva del servidor después de presionar el botón Atrás. Si las pruebas revelan que se trata de un problema, es posible que deba emplear algunas técnicas AJAX para completar la información nueva en el JS después de presionar el botón Atrás.

Cuestiones relacionadas