window.location.href什么时候更新?

时间:2018-05-13 17:26:14

标签: javascript

我有一个场景,我想检查浏览器是否可以通过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会更新?

1 个答案:

答案 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)

`