Нет кросс-браузерного подхода для достижения этой цели. Document.Referrer может быть установлен, даже если запись истории не существует.
Я придумал следующий "хак". Он использует событие onbeforeunload, чтобы определить, начинает ли браузер покидать страницу или нет. Если этого не произойдет в определенный промежуток времени, он просто перенаправит на запасной вариант.
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);
}
Вы можете вызвать эту функцию, используя goBack("fallback.example.org")
.
Одним из вариантов использования является то, что вы можете добавить кнопку «Назад» на любую страницу, а также убедиться, что эта кнопка «Назад» работает, даже если пользователь переходит непосредственно на эту страницу (например, по закладке, прямой ссылке и т. Д.) .
Так что либо он выполняет history.back (), либо, если запись отсутствует, он будет перенаправлен на запасной вариант.