使用Javascript history.go()获取真实的“previous”;页面

Use Javascript history.go() to the real "previous" page

本文关键字:previous 页面 真实 获取 history Javascript go 使用      更新时间:2023-09-26

假设我们有这样的历史记录:

 - Home
 - Page 1
 - Page 2

JS history.go(-1)可以很好地转到第1页…但是如果我们当前的历史是

 - Home
 - Page 1
 - Page 2
 - Page 2 (2nd time)
 - Page 2 (3rd time)
 - ...
 - Page 2 (nth time)

如何使用JavaScript历史对象返回第1页?

您可以创建一个函数,对对象的属性执行a +1操作,然后您可以使用该值返回正确的步数

var History = {
    steps : 0
}
somenewpagelink.onclick = function() {
    History.steps = (parseInt(History.steps)+1);
}

如果你想回到第1页,简单地创建另一个函数:

function goBack() {
    History.go(-History.steps);
    History.steps = 0;
}

当你返回的步骤将被重置,所以当你继续浏览你的网站,它不会回到许多步骤。

我确实认为使用jQuery是一个很好的解决方案,但不是对于可以很容易地用原始Javascript解决的小事情,它只会减慢你的网站,如果使用jQuery的一个功能。

此外,你可以在那里添加一个开关,如果你点击返回从第3页返回到第1页,你也可以使它反向。

function goBack(r) {
    if (r)
        history.go(History.steps);
    else 
        history.go(-History.steps);
        History.steps = 0;
}

当然,这个函数需要进行必要的调整,以达到预期的效果,并完全完美,但对于简单的实现,您可以这样做。

此方法的签名是来自(w3school)的history.go(number|URL)。所以你可以用字符串参数代替数字,如果(以某种方式)你知道哪个是page2的url,你可以使用它。

history.go("http://localhost/page2");

当页面加载时,记录现在的历史。js对象的长度。当您想回到page1时,history.go(record-history.length-1)。我测试过它工作得很好。但我不知道是否会有不安全的东西。