no hay un enfoque multi-navegador para lograr esto. Document.Referrer puede establecerse incluso si no existe entrada de historial.
me ocurrió con el siguiente "piratear". Utiliza el evento onbeforeunload para detectar si el navegador comienza a salir de la página o no. Si no lo hace en un intervalo de tiempo determinado, se redireccionará a la reserva.
window.goBack = function goBack(fallback){
var useFallback = true;
window.onbeforeunload = function(){
useFallback = false;
}
window.history.back();
setTimeout(function(){
if (useFallback){ window.location.href = fallback; }
}, 100);
}
Puede llamar a esta función usando goBack("fallback.example.org")
.
Uno de los casos de uso es que puede querer agregar un botón Atrás a cualquier página y también quiere asegurarse de que este botón funcione incluso si el usuario va directamente a esta página (por ejemplo, mediante marcador, enlace directo, etc.)
Así que, o lo hace de realizar una history.back() o si no hay ninguna entrada, que va a redirigir a un repliegue.
duplicado posible de [Cómo comprobar si el usuario puede volver atrás en el historial del navegador o no] (http://stackoverflow.com/questions/3588315/how-to-check-if-the-user-can-go -back-in-browser-history-or-not) – bummi