У меня есть сценарий, в котором я хотел проверить, может ли браузер вернуться на предыдущую страницу через history.back (). Для этого я последовал этому ответу https://stackoverflow.com/a/24056766/2948305, код которого я вставляю ниже
function historyBackWFallback(fallbackUrl) {
fallbackUrl = fallbackUrl || '/';
var prevPage = window.location.href;
window.history.go(-1);
setTimeout(function(){
if (window.location.href == prevPage) {
window.location.href = fallbackUrl;
}
}, 500);
}
Когда выполняется window.history.go (-1), что будет решать window.location.href? Будет ли он разрешать текущую страницу или предыдущую страницу (история -1).
console.info(window.location.href);
печатает URL-адрес текущей страницы. Означает ли это, что до тех пор, пока предыдущая страница не будет полностью загружена, window.location.href будет преобразован в текущую страницу.
Или, пока эта функция не будет полностью выполнена (с / без setTimeout), она всегда будет указывать на URL-адрес текущей страницы.
Если быть точным, когда именно будет обновлен window.location.href?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Когда пользователь меняет расположение вкладки, для этого сеанса создается новое окно.
Этот код даже не выполняется, потому что окно полностью меняется, и оно тоже теряется.
Я считаю, что этот код может доказать то, что я сказал.
`` ''
const foo = 'foo';
const oldWindow = window;
window.history.go(-1);
window = oldWindow;
foo // ReferenceError
`` ''
window не указывает на предыдущее окно. Использование setTimeout не меняет результата.
Также пробовал это, но похоже, что без изменений
`
const foo = 'foo';
const oldWin = Object.create(window);
window.history.go(-1)
setTimeout(() => {
window = oldWin;
}, 500)
`