2010-08-20 120 views
140

¿Hay alguna forma de obtener la URL anterior en JavaScript? Algo como esto:¿Cómo obtener la URL anterior en JavaScript?

alert("previous url is: " + window.history.previous.href); 

¿Hay algo como eso? ¿O debería simplemente almacenarlo en una cookie? Solo necesito saber para poder hacer transiciones desde la URL anterior a la URL actual sin anclajes y todo eso.

Respuesta

221
document.referrer 

en muchos casos le dará el URL de la última página que el usuario visitó, si llegaron a la página actual haciendo clic en un enlace (frente escribiendo directamente en la barra de direcciones, o creo que en algunos casos, enviando un formulario?). Especificado por DOM Level 2. More here.

window.history permite la navegación, pero no el acceso a las URL en la sesión por razones de seguridad y privacidad. Si hubiera un historial de URL más detallado disponible, entonces cada sitio que visite podría ver todos los otros sitios en los que estuvo. Si se trata de un estado moviéndose alrededor de su propio sitio, es posiblemente menos frágil y ciertamente más útil usar una de las técnicas de gestión de sesión normales: datos de cookie, parámetros de URL o información de sesión del lado del servidor.

+4

También hay document.referrer, si llegó a la página actual a través de un enlace (pero no, por ejemplo, mediante marcador o escribiendo en la barra de direcciones). – Hellion

+1

No siempre funciona. Es decir. iframes. –

+0

Gracias, agregué la nota re: document.referrer. –

18
document.referrer 

Esta es una estándar, dará la URL que ha visitado.

0

document.referrer dará la URL de la página anterior, pero funcionará para todos los navegadores como Opera, Mozilla Firefox, Safari, etc., pero no funciona en Internet Explorer. Será nulo cuando use ese document.referrer en IE.

+4

no es del todo cierto para IE! –

+0

Funciona en IE 9 para mí – frodo2975

14

document.referrer no es lo mismo que la URL real en todas las situaciones.

Tengo una aplicación donde necesito establecer un conjunto de marcos con 2 marcos. Se conoce un marco, el otro es la página desde la que estoy vinculando. Parece que document.referrer sería ideal porque no tendría que pasar el nombre del archivo real al documento del conjunto de marcos.

Sin embargo, si posteriormente cambia la página de marco inferior y luego usar history.back() que no se carga la página original en el marco inferior, sino que vuelve a cargar document.referrer y como resultado el conjunto de marcos se ha ido y que están de vuelta a la partida original ventana.

Me tomó un poco de tiempo entender esto. Por lo tanto, en la matriz de historial, document.referrer no es solo una URL, también es aparentemente la especificación de la ventana de referencia. Al menos, esa es la mejor forma en que puedo entenderlo en este momento.

9

Si quieres ir a la página anterior sin conocer la URL, puedes usar la nueva API de historial.

history.back(); //Go to the previous page 
history.forward(); //Go to the next page in the stack 
history.go(index); //Where index could be 1, -1, 56, etc. 

Pero no se puede manipular el contenido de la pila del historial en el navegador que no admite la API de HTML5 Historia

Para más información ver el doc

Cuestiones relacionadas