JavaScript window.history.go(-1)

本文介绍了浏览器的历史记录操作,包括window.history.go()方法的使用,它可以正向或负向移动浏览历史。同时讲解了window.location.reload()用于页面刷新,以及history.back()和history.forward()进行前后页面跳转。这些方法在网页交互中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows 对象引用不是必须的,所以:windows.history.go() == history.go()

go方法

go() 方法可加载历史列表中的某个具体的页面。参数只有一个,正数或者负数。

正数:前进;

负数:后退。

history.back()   后退
history.forward() 前进

window.location.reload()    // 刷新  
window.history.go(1)        // 前进一页  
window.history.go(-1)       // 后退一页+刷新  
window.history.forward()    // 前进  
window.history.back()       // 单纯的返回上一页 
<think>我们被要求提供window.history对象的方法列表。根据引用[2]和引用[4],我们可以总结如下:window.history对象提供了以下方法:1.back():退回到历史记录中的上一个页面。2.forward():前进到历史记录中的下一个页面。3.go():前进或后退指定数量的页面。参数为整数,正数表示前进,负数表示后退。4.pushState():向浏览器历史记录栈中添加一个新的状态(记录)。5.replaceState():替换当前页面在浏览器历史记录中的状态(即当前记录)。此外,引用[2]还提到了一个属性:-length:获取历史记录中的页面数量(只读)。同时,引用[1]和引用[4]提到,这些方法(尤其是pushState和replaceState)会与window.onpopstate事件一起工作,当用户通过前进/后退按钮导航时触发popstate事件。因此,我们可以将方法列表整理如下:###window.history方法列表1.**`history.back()`**作用:后退到历史记录中的上一个页面(相当于用户点击浏览器的后退按钮)。示例:`window.history.back();`2.**`history.forward()`**作用:前进到历史记录中的下一个页面(相当于用户点击浏览器的前进按钮)。示例:`window.history.forward();`3.**`history.go(delta)`**作用:从当前页面出发,在历史记录中向前或向后跳转指定页数。参数:`delta`(整数),表示相对当前页面的偏移量。-`history.go(-1)`等价于`history.back()`-`history.go(1)`等价于`history.forward()`-`history.go(0)`刷新当前页面(部分浏览器支持)示例:`window.history.go(-2);`//后退两页4.**`history.pushState(state,title[,url])`**作用:向历史记录栈中添加一个新的状态(记录),不刷新页面。参数:-`state`:一个状态对象,与添加的记录相关联。当用户导航到该状态时,会触发popstate事件,事件的state属性包含该状态对象。-`title`:标题(现代浏览器通常忽略此参数,一般传入空字符串)。-`url`(可选):新的URL,必须与当前页面同源。示例:```javascriptwindow.history.pushState({page:1},"","page1.html");```5.**`history.replaceState(state,title[,url])`**作用:替换当前历史记录的状态(即当前记录),不刷新页面。参数:与pushState相同。示例:```javascriptwindow.history.replaceState({page:2},"","page2.html");```此外,还有一个只读属性:-**`history.length`**作用:返回当前会话中历史记录的数量(包括当前页面)。示例:`console.log(window.history.length);`###注意事项-使用`pushState`和`replaceState`不会触发`popstate`事件,只有用户操作(如点击后退按钮)或调用`back`、`forward`、`go`方法才会触发`popstate`事件[^1][^4]。-由于安全原因,不能查询历史记录中的具体URL(浏览器限制)[^2]。-状态对象(state)会被序列化保存,因此大小有限制(通常与本地存储类似,约5MB)[^2]。###相关事件-**`window.onpopstate`**:当活动历史记录条目更改时触发(如用户点击后退/前进按钮)[^1][^4]。示例:```javascriptwindow.addEventListener('popstate',function(event){console.log("State:",event.state);});```-**`window.onpageshow`**:当页面显示时触发(包括从缓存中恢复的情况)[^1]。-**`visibilitychange`**:当文档的可见性改变时触发(如切换标签页)[^1]。---§§相关问题§§1.`history.pushState`和`history.replaceState`有什么区别?[^3]2.如何监听浏览器历史记录的变化?[^1][^4]3.`history.pushState`方法中的状态对象(state)有什么用途?4.在单页应用(SPA)中如何利用`history.pushState`实现路由?[^2]</think>### window.history 方法列表 `window.history` 对象提供了一系列操作浏览器历史记录的方法,以下是核心方法及其功能说明: --- #### 1. **`history.back()`** - **功能**:后退到历史记录中的上一个页面 - **等效操作**:相当于用户点击浏览器后退按钮 - **示例**: ```javascript window.history.back(); // 返回上一页 ``` #### 2. **`history.forward()`** - **功能**:前进到历史记录中的下一个页面 - **等效操作**:相当于用户点击浏览器前进按钮 - **示例**: ```javascript window.history.forward(); // 进入下一页 ``` #### 3. **`history.go(delta)`** - **功能**:从当前页面出发,在历史记录中向前或向后跳转指定页数 - **参数**: - `delta`(整数): - 负数:后退(如 `go(-1)` 等价于 `back()`) - 正数:前进(如 `go(1)` 等价于 `forward()`) - `0`:刷新当前页 - **示例**: ```javascript window.history.go(-2); // 后退两页 ``` #### 4. **`history.pushState(state, title, url)`** [^2][^3][^4] - **功能**:向历史记录栈中添加新条目(**不刷新页面**) - **参数**: - `state`:关联的状态对象(可存储自定义数据) - `title`:标题(现代浏览器通常忽略) - `url`:新URL(必须同源) - **特点**:新增条目可被后退操作访问 - **示例**: ```javascript window.history.pushState( { page: "detail", id: 123 }, "", "/detail?from=home" ); ``` #### 5. **`history.replaceState(state, title, url)`** [^2][^3][^4] - **功能**:替换当前历史记录条目(**不刷新页面**) - **参数**:同 `pushState` - **特点**: - 覆盖当前条目,**不可通过后退访问原记录** - 常用于登录后替换登录页历史记录 - **示例**: ```javascript window.history.replaceState( { page: "dashboard" }, "", "/dashboard" ); ``` --- #### 相关属性与事件 1. **`history.length`** [^2] - 只读属性,返回历史记录栈中的条目总数 - 示例:`console.log(window.history.length);` 2. **`popstate` 事件** [^1][^4] - 当用户通过前进/后退按钮导航时触发 - 示例: ```javascript window.addEventListener("popstate", (event) => { console.log("导航至状态:", event.state); }); ``` 3. **`pageshow` 事件** [^1] - 页面显示时触发(包括从缓存恢复的情况) - 示例: ```javascript window.addEventListener("pageshow", () => { console.log("页面显示"); }); ``` --- ### 注意事项 1. **安全限制**: - `pushState`/`replaceState` 的 URL 必须与当前页面同源[^2] - 隐私模式或安全策略可能限制操作历史记录 2. **状态对象大小**: - `state` 对象不宜过大(通常限制为 640k 左右)[^2] 3. **SPA 应用**: - 单页应用中常用 `pushState`/`replaceState` 实现无刷新路由[^2][^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值