我正在尝试创建一个按钮以进入第一个历史记录页面,但我不知道为什么我的代码不起作用。这是我的代码:
function firstpg() {
var startpt = '-' + window.history.length;
window.history.go(startpt);
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<button onclick="firstpg()">Go First</button>
</body>
</html>
有什么问题吗?
历史记录还包括当前页面,因此您需要从长度中减去
1
才能转到第一页。
var startpt = '-' + ( window.history.length - 1) ;
或
var startpt = -(window.history.length - 1) ;
您需要否定
length
,因为它不是基于 0
的。所以尝试一下:
var startpt = ( window.history.length - 1) * -1;
这应该有效:
<!DOCTYPE html>
<html>
<head>
<script>
function firstpg() {
var startpt = ( window.history.length - 1) * -1;
window.history.go(startpt);
}
</script>
</head>
<body>
<button onclick="firstpg()">Go First</button>
</body>
</html>
最简单、最容易的解决方案是(window.history.length):
window.history.go(1 - window.history.length);
以下数学运算已被简化:
(window.history.length - 1) * -1
(window.history.length * -1) - (1 * -1)
-windows.history.length - (-1)
-windows.history.length + 1
1 - windows.history.length
作为一个不完美的解决方案,可以通过循环实现返回到历史堆栈中的第一页:
let length = history.length;
for (step = length - 1; step > 0; step--) {
history.back(step);
}
如果步数大于
history.length
,则history.back(step)
将被浏览器忽略。因此,这个循环将尝试迭代地发出返回命令,直到到达第一页。
如果当前页面不在历史堆栈顶部,history.go(-(window.history.length - 1))
将不起作用。