En mi aplicación web de reproducción, web, hago clic en el botón Atrás del navegador, la URL cambia pero la página no cambia. De manera similar, cuando hago clic en el botón frontal, después de navegar hacia atrás, la URL sigue cambiando pero la página web sigue siendo la misma.
Entonces, si estoy en localhost: 9000/A/B/C/D y hago clic en Atrás, la URL cambiará a localhost: 9000/A/B/C pero la página web sigue siendo la misma. Revisé la red en la consola del navegador y no se envía ninguna solicitud al enrutador/backend. Al volver a cargar la página, se cargó la página web que se esperaba de una URL en particular.
Para resolver este problema, agregué un archivo javascript que escucha el evento popstate y cada vez que presiono hacia atrás (los cambios de URL) vuelve a cargar la página desde la URL.
Al hacer esto, se envía una solicitud a través del enrutador y se carga lo que se espera que se vea. Sin embargo, esto me está causando problemas. Cuando hago esto, el botón frontal de los navegadores se vuelve gris. window.history.forward(1) me da indefinido. Similar es el caso con window.history.back(-1). ¿Qué debo hacer? Por favor ayuda.
El flujo de mi proyecto de Play Framework se parece a esto:
rutas
GET /person/:height controllers.ViewController.person(height: Int)controladores.ViewController.persona
def person(height: Int): EssentialAction = cached.apply(req => req.path, cacheDuration) { withoutLoginAction { implicit loginState => implicit request => Ok(views.html.person(Option(height))) } }persona.scala.html
@import controllers.actions.LoginState @import controllers.view.OtherApp @(personHeight: Option[Int])(implicit requestHeader: RequestHeader, messagesProvider: MessagesProvider, otherApps: Seq[OtherApp], loginState: LoginState = null) @if(personHeight.isEmpty) { @views.html.index(Option(constants.View.BLOCKS)) } else { @views.html.index(Option("")) <script> componentResource('explorerContent', jsRoutes.controllers.ComponentViewController.person(@personHeight.getOrElse(1))) </script> }Descripción más larga de lo que está sucediendo:
URI: http://localhost:9000/persona/altura/78478
URI: http://localhost:9000/persona/altura
Pero la página web sigue siendo la misma.
URI: http://localhost:9000/persona
Pero la página web sigue siendo la misma.
URI: http://localhost:9000/persona/altura
y la página web sigue siendo la misma