Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

616
Views
¿Cómo forzar la recarga de una página cuando se usa el botón Atrás del navegador?

Necesito detectar de alguna manera que el usuario ha presionado el botón Atrás del navegador y volver a cargar la página con actualización (recargando el contenido y CSS) usando jquery.

¿Cómo detectar tal acción a través de jquery?

Porque en este momento algunos elementos no se recargan si uso el botón Atrás en un navegador. Pero si uso enlaces en el sitio web, todo se actualiza y se muestra correctamente.

¡IMPORTANTE!

Algunas personas probablemente han entendido mal lo que quiero. No quiero actualizar la página actual. Quiero actualizar la página que se carga después de presionar el botón Atrás. esto es lo que quiero decir de una manera más detallada:

  1. el usuario está visitando la página 1.
  2. mientras está en la página 1, hace clic en un enlace a la página 2.
  3. es redirigido a la página2
  4. ahora (¡parte importante!) hace clic en el botón Atrás en el navegador porque quiere volver a la página 1
  5. él está de vuelta en la página 1, y ahora la página 1 se está recargando y algo es alertado como "¡Has vuelto!"
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede usar el evento pageshow para manejar la situación cuando el navegador navega a su página a través del recorrido del historial:

 window.addEventListener( "pageshow", function ( event ) { var historyTraversal = event.persisted || ( typeof window.performance != "undefined" && window.performance.navigation.type === 2 ); if ( historyTraversal ) { // Handle page restore. window.location.reload(); } });

Tenga en cuenta que la memoria caché HTTP también puede estar involucrada. Debe configurar los encabezados HTTP adecuados relacionados con la caché en el servidor para almacenar en caché solo los recursos que deben almacenarse en caché. También puede hacer una recarga forzada para instruir al navegador para que ignore el caché HTTP: window.location.reload( true ) . Pero no creo que sea la mejor solución.

Para más información consulta:

  • Trabajar con BFCache artículo en MDN
  • WebKit Page Cache II: el evento de descarga de Brady Eidson
  • referencia de evento pageshow en MDN
  • Pregunta sobre actualizaciones de Ajax, botón Atrás y DOM
  • JavaScript - evento bfcache/pageshow - event.persisted siempre establecido en falso? pregunta
over 4 years ago · Santiago Trujillo Report

0

Ha pasado un tiempo desde que se publicó esto, pero encontré una solución más elegante si no necesita admitir navegadores antiguos.

Puedes hacer una consulta con

 performance.navigation.type

La documentación, incluida la compatibilidad con el navegador, está aquí: https://developer.mozilla.org/en-US/docs/Web/API/Performance/navigation

Entonces, para ver si la página se cargó desde el historial usando atrás, puede hacer

 if(performance.navigation.type == 2){ location.reload(true); }

El 2 indica que se accedió a la página navegando en el historial. Otras posibilidades son-

0: se accedió a la página siguiendo un enlace, un marcador, el envío de un formulario o un script, o escribiendo la URL en la barra de direcciones.

1: Se accedió a la página haciendo clic en el botón Recargar o mediante el método Location.reload().

255: De cualquier otra manera

Estos se detallan aquí: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation


Nota Performance.navigation.type ahora está obsoleto en favor de PerformanceNavigationTiming.type que devuelve 'navegar' / 'recargar' / 'atrás_adelante' / 'prerender': https://developer.mozilla.org/en-US/docs/Web /API/PerformanceNavigationTiming/type

over 4 years ago · Santiago Trujillo Report

0

Dado que performance.navigation ahora está en desuso, puede probar esto:

 var perfEntries = performance.getEntriesByType("navigation"); if (perfEntries[0].type === "back_forward") { location.reload(true); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!