📜  HTML | DOM 历史 go() 方法(1)

📅  最后修改于: 2023-12-03 15:15:36.123000             🧑  作者: Mango

HTML | DOM 历史 go() 方法

go() 方法是浏览器历史记录管理对象(History)的一个方法,用于在浏览器历史记录中向前或向后导航。我们可以通过调用 go() 方法,并传入一个整数参数,来控制前进或后退的次数,例如 window.history.go(-1) 将回到历史记录中的上一个页面。

历史和浏览器

在 JavaScript 出现之前,浏览器行为的一部分由 HTML 控制,比如链接和表单。当用户单击链接或提交表单时,浏览器会导航到新的 URL,并加载新的文档。但是,这种方式没有提供任何历史记录或用户导航的控制。

随着 JavaScript 的出现,浏览器开始提供一个更加灵活的导航机制,即浏览器历史记录(History)。浏览器通过维护历史记录,为 Web 应用程序提供了许多新功能。

go() 方法的使用

go() 方法可以向前或向后导航浏览器历史记录。如果向前导航,传递的参数必须是一个正整数,如果向后导航,传递的参数必须是一个负整数。如果参数为 0,则不会导航,即相当于刷新当前页面。

向前导航

向前导航需要传递一个正整数参数,表示要前进多少步。例如,我们可以使用以下代码向前导航一个步骤:

window.history.go(1);
向后导航

向后导航需要传递一个负整数参数,表示要后退多少步。例如,我们可以使用以下代码向后导航一个步骤:

window.history.go(-1);
刷新当前页面

如果想要刷新当前页面,可以使用以下代码:

window.history.go(0);
pushState()replaceState() 方法

使用 pushState()replaceState() 方法,我们可以通过 JavaScript 向浏览器历史记录中添加或修改条目。这两个方法在 HTML5 中引入,允许 Web 应用程序修改浏览器的地址栏 URL,而无需进行完整的页面刷新。

pushState() 方法

pushState() 方法将一个新的状态添加到浏览器历史记录中。它接受三个参数:状态对象、页面标题和可选的 URL。以下示例将在浏览器历史记录中添加一个新条目:

history.pushState({ page: 1 }, "title 1", "?page=1");
replaceState() 方法

replaceState() 方法用于修改当前的历史记录条目。它也接受三个参数:状态对象、页面标题和可选的 URL。以下示例将修改当前条目:

history.replaceState({ page: 2 }, "title 2", "?page=2");
总结

浏览器历史记录管理对象(History)提供了一种强大的导航机制,允许 Web 应用程序实现更加灵活的导航功能。go() 方法是其中的一个重要方法,可以控制历史记录中的前进和后退。同时,pushState()replaceState() 方法允许 Web 应用程序修改浏览器的地址栏 URL,而无需进行完整的页面刷新。