使用Javascript history.go()到真正的“上一页”

时间:2013-05-15 10:45:21

标签: javascript html browser-history

假设我们有这样的历史:

 - 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页

3 个答案:

答案 0 :(得分:1)

您可以创建一个对对象的属性执行+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 for 1功能,它只会减慢您的网站速度。

此外,您可以在其中添加一个开关,如果您单击返回以实际从第3页返回到第1页,您也可以将其反转。

function goBack(r) {

    if (r)
        history.go(History.steps);
    else 
        history.go(-History.steps);
        History.steps = 0;

}

当然,这个功能需要进行调整才能达到预期的效果并且完全无瑕疵,但是对于简单的实现,你可以使用它。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

加载页面时,在js对象中记录now.length。 当你想要回到page1,history.go(record-history.length-1)。 我测试它运作良好。但我不知道是否会有不安全的东西。