Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

79
Vistas
El botón Atrás/Botón frontal del navegador no funciona en la aplicación web Scala Play

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

  1. Al volver a hacer clic, la URI cambia a

URI: http://localhost:9000/persona/altura

Pero la página web sigue siendo la misma.

  1. Al hacer clic de nuevo:

URI: http://localhost:9000/persona

Pero la página web sigue siendo la misma.

  1. Al hacer clic en adelante:

URI: http://localhost:9000/persona/altura

y la página web sigue siendo la misma

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda