JavaScript 窗口历史记录

在本教程中,你将了解 JavaScript 窗口历史记录对象。

历史对象

Window 对象的 history 属性指的是历史对象。它包含浏览器会话历史记录,当前框架或窗口中访问的所有页面的列表。

由于 Window 是一个全局对象,并且它位于作用域链的顶部,因此 Window 对象的属性即 window.history 可以在没有 window. 前缀的情况下访问,例如 window.history.length 可以写为 history.length

以下部分将向你展示如何获取用户浏览历史记录的信息。但是,出于安全原因,不允许脚本访问存储的 URL。

获取访问的页数

window.history.length 属性可用于获取当前窗口的浏览器会话历史记录中的页数。它还包括当前加载的页面。

你可以使用此属性查看用户在当前浏览器会话期间访问了多少页面,如以下示例所示:

<script>
function getViews() {
    alert("You've accessed " + history.length + " web pages in this session.");
}
</script>
 
<button type="button" onclick="getViews();">Get Views Count</button>

回到上一页

你可以使用 History 对象的 back() 方法,即 history.back() 返回会话历史记录中的上一页。它与单击浏览器的后退按钮相同。

<script>
function goBack() {
    window.history.back();
}
</script>
 
<button type="button" onclick="goBack();">Go Back</button>

如果你的浏览器后退按钮处于活动状态,则单击此 “返回” 链接会使你退后一步。

前进到下一页

你可以使用 History 对象的 forward() 方法,即 history.forward() 前进到会话历史记录中的下一页。它与单击浏览器的前进按钮相同。

<script>
function goForward() {
    window.history.forward();
}
</script>
 
<button type="button" onclick="goForward();">Go Forward</button>

如果你的浏览器转发按钮处于活动状态,则单击此 “前进” 链接会向前迈进一步。

去一个特定的页面

你还可以使用 History 对象的 go() 方法从会话历史记录加载特定页面,也就是 history.go() 。此方法采用整数作为参数。负整数在历史记录中向后移动,正整数在历史记录中向前移动。

window.history.go(2);  // Go back two pages
window.history.go(-1); // Go back one page
window.history.go(0);  // Reload the current page
window.history.go(1);  // Go forward one page
window.history.go(2);  // Go forward two pages

提示: 如果你尝试访问并不在窗口的历史存在,那么 back()forward()go() 会什么也不做。