Ответ 1
if (history.length) {
//There is history to go back to
history.go(-1);
}
Возможно ли проверить, существует ли значение для history.go(-1)? Я знаю, что вы не можете получить доступ к history.previous напрямую.
Я стараюсь держаться подальше от document.referrer, потому что я знаю, что он может быть заблокирован в некоторых случаях.
Вот что я пытаюсь сделать. У меня есть страница с ошибкой, на этой странице я хотел бы либо нажать кнопку BACK (если это не единственный элемент в истории), либо кнопку закрытия (если есть).
if (history.length) {
//There is history to go back to
history.go(-1);
}
Собственно, history.length
всегда один или несколько, так как текущая страница подсчитывается. Кроме того, если у вас есть передовая история (т.е. Вы использовали кнопку "Назад" ), эти страницы также учитываются. Поэтому вам нужна более сложная проверка:
if( (1 < history.length) && document.referrer ) {
Если длина истории больше 0, то она содержит хотя бы одну точку истории.
if (history.length)
Для этого не существует кросс-браузерного подхода. 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(), либо если нет записи, он перенаправляется на резерв.
function test() {
document.URL = document.referrer;
}