假设我们有这样的历史:
- 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页?
答案 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)。 我测试它运作良好。但我不知道是否会有不安全的东西。