Mejores prácticas:Cómo manejar la simultaneidad de navegación del navegador y del sitio web

StackOverflow https://stackoverflow.com/questions/77645

  •  09-06-2019
  •  | 
  •  

Pregunta

Es un problema bien conocido por todos los desarrolladores web.Por lo que intenté encontrar una buena solución a este problema, no hubo ninguna (o al menos no pude encontrarla).

Supongamos lo siguiente:

El usuario no se comporta como se esperaba. El proyecto real en el que estoy trabajando utiliza una navegación dentro del portal web.Pero si el usuario utiliza el botón Atrás del navegador, todo se pone en peligro y el resultado no siempre fue predecible.

Usamos el marco de struts y almacenamos la URL posterior en formularios; en algunos lugares, donde necesitábamos una URL posterior, esto se generó a partir de la URL posterior de este formulario.Porque solo había un campo para esta información y por lo tanto no era posible retroceder varios pasos.

Cuando cambia el "flujo de puntales", lo que puede resultar en el uso de un diferente forma - esta información se perderá.

Si el usuario se atreve a poner un marcador en algún lugar dentro de su aplicación web: es posible que esta información nunca se haya configurado y nuevamente el resultado será impredecible o no lo suficientemente flexible.

Mi solución":

Estaba almacenando cada página relevante para la navegación que el usuario visitó en un como una pila almacenamiento en el sesión.Esto significa que se recopila y almacena una ruta de navegación para navegaciones posteriores.

En cualquier página dentro de la aplicación web, donde se involucra la navegación hacia atrás, utilicé una etiqueta hecha por mí mismo que representa el contenido de la pila en la URL.

Y eso es.Cuando se hizo clic en esta URL de retroceso, la pila se llenó con el contenido de la URL de retroceso en la que hizo clic el usuario (que contiene toda la información de la pila una vez que se representó el vínculo de retroceso).

Esto está bastante claro, porque un clic en un enlace es un estado claro, donde el desarrollador web sabe exactamente dónde "está" el usuario en este mismo momento - absolutamente independiente de lo que el usuario haya hecho antes (por ejemplo,presionando el botón Atrás del navegador varias veces).Luego, la pila de navegación se construye sobre este nuevo estado.

Reanudar:Queda claro que ésta no será la mejor solución.Pero permite almacenar información adicional en la pila, como parámetros de página y algunas otras cosas útiles (es posible realizar más desarrollos).

Entonces, ¿cuáles fueron sus soluciones a este problema?

salud,

maná

¿Fue útil?

Solución

La solución de pila suena interesante, pero probablemente se romperá si el usuario elige navegar "en paralelo" en diferentes pestañas o usando marcadores.

Me temo que no entiendo muy bien por qué hay que mantener todo este estado para cada usuario:Lo ideal es que la web siga las Principio de descanso y ser completamente apátrida.Por tanto una única URL debería identificar un único recurso, sin tener que mantener el historial de navegación de cada usuario.

Si su aplicación web depende en gran medida de AJAX, podría intentar implementar algo como GMail (es cierto que no es tan fácil...), donde cada cambio en la interfaz se refleja en un cambio en la URL de la página.Por lo tanto, cada página se identifica mediante la URL actual y el usuario puede navegar simultáneamente o utilizar el botón Atrás como de costumbre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top