3

假设我们有这样的历史:

 - Home
 - Page 1
 - Page 2

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

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

我们如何使用JavaScript历史对象返回到第 1 页

4

3 回答 3

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 用于 1 个功能,它只会减慢您的网站速度。

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

function goBack(r) {

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

}

当然,此功能需要进行必要的调整才能达到预期的效果并且完全完美,但对于简单的实现,您可以使用它。

于 2013-05-15T12:26:58.843 回答
0

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

history.go("http://localhost/page2");
于 2013-05-15T11:05:11.187 回答
0

加载页面时,现在将 history.length 记录在 js 对象中。当你想回到第1页时,history.go(record-history.length-1)。我测试它工作得很好。但我不知道会不会有不安全的东西。

于 2013-07-10T07:59:11.933 回答