2012-01-23 15 views
46

Cuando el usuario carga la página, inmediatamente hago una ventana redirigir a otra ubicación.En Javascript, ¿cómo "borro" la parte posterior (historial -1)?

El problema es que cuando el usuario hace clic atrás, volverá a la página que hace la redirección.

¿Puedo "cancelar" el historial de la página anterior? ¿De modo que cuando el usuario hace clic atrás, vuelve DOS páginas en su lugar?

Respuesta

78

En lugar de utilizar window.location = url; para redirigir,

intento:

window.location.replace(url); 

después de usar replace() de la página actual no se guardará en el historial de la sesión , lo que significa que el usuario no lo hará ser capaz de usar el botón Atrás en navegue hasta él.

+1

Gracias ... Estaba buscando esto. – Neeraj

+0

Esto funciona para las páginas en las que tengo control sobre la carga, pero ¿qué hay para las instancias en las que desea borrar todas las exploraciones anteriores (sitios diferentes)? Soy flojo y no quiero manejar el hecho de salir de la aplicación web intencionalmente o a propósito usando el botón Atrás. –

8

Puede usar location.replace para reemplazar la entrada de ubicación actual (la página de redirección) por la nueva (el destino). Para ello se requiere que lo haga la redirección a través de JavaScript en lugar de con etiquetas meta o un 302. ej .:

// In the redirecting page 
location.replace("path/to/target/page"); 

Live example | Live example source

3

Para cualquiera que venga a través de esta página y buscando una manera AngularJS de lograr esto (en lugar de Javascript), utilice reemplazar el servicio de $ ubicación() método (documentation):

Uso $location.url('/newpath'); o $location.path('/newpath'); como usted normalmente haría la redirección en angular. Y luego simplemente agregue $location.replace(); justo después. O puede encadenar los comandos de esta manera:

$location.url('/newpath').replace(); 
Cuestiones relacionadas