假设我们有这样的历史:
- 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 页?
假设我们有这样的历史:
- 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 页?
您可以创建一个对对象的属性执行 +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;
}
当然,此功能需要进行必要的调整才能达到预期的效果并且完全完美,但对于简单的实现,您可以使用它。
此方法的签名history.go(number|URL)
来自(w3school)。因此,您可以使用字符串参数而不是数字,并且如果(以某种方式)您知道哪个是 page2 的 url,则可以使用它。
history.go("http://localhost/page2");
加载页面时,现在将 history.length 记录在 js 对象中。当你想回到第1页时,history.go(record-history.length-1)。我测试它工作得很好。但我不知道会不会有不安全的东西。