我有一个场景,我想检查浏览器是否可以通过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.log(window.location.href);
打印当前页面URL。这是否意味着,在上一页完全加载之前,window.location.href将解析为当前页面。
或者直到此功能完全执行(有/没有setTimeout),它将始终指向当前页面URL。
具体来说,什么时候window.location.href会更新?
答案 0 :(得分:0)
当用户更改选项卡的位置时,将为该会话创建一个新窗口。
该代码甚至无法执行,因为窗口完全改变而且也丢失了。
我相信这段代码可以证明我所说的。
```
const foo = 'foo';
const oldWindow = window;
window.history.go(-1);
window = oldWindow;
foo // ReferenceError
```
窗口没有指向上一个窗口。使用setTimeout不会改变结果。
也尝试了这个但似乎没有改变
`
const foo = 'foo';
const oldWin = Object.create(window);
window.history.go(-1)
setTimeout(() => {
window = oldWin;
}, 500)
`