浏览器把你访问过的页面记成一串"书签栈",history 就是控制它的:back 后退、forward 前进、go(n) 跳指定页。但只能切换页面,读不到历史页面的完整地址(浏览器安全限制)。
history 就像浏览器自带的"翻页遥控器":你点过的页面会按顺序排成一串,back 是"回上一页"、forward 是"去下一页"、go(n) 是"一次跳 n 页"。它只能控制"切到哪一页",不能偷看历史页面的完整地址(安全限制,防止恶意网站收集你的浏览记录)。
// 后退一页,跟你点浏览器左上角那个 ← 一样 window.history.back(); // 前进一页,跟你点浏览器那个 → 一样 window.history.forward(); // go(数字) 想跳几页跳几页:正数往前、负数往后、0 就是刷新本页 window.history.go(1); // 往前跳 1 页 window.history.go(-2); // 往后退 2 页 window.history.go(0); // 啥都不动,把本页刷新一遍
| 方法 | 作用 |
|---|---|
| back | 后退上一页 |
| forward | 前进下一页 |
| go(正数) | 向前前进 N 页 |
| go(负数) | 向后退 N 页 |
| go(0) | 刷新当前页面 |
作业里问"history.go(-2) 干嘛"——就是后退两页。回不去时先想是不是用了 location.replace(它不进历史栈)。
// 这次打开浏览器以来,一共路过了几页(含本页) window.history.length; // 对比实验(作业二④): // 从 A 页用 location.href 跳到 B → 历史里还留着 A,按 back 能回去 // 从 A 页用 location.replace 跳到 B → A 被从历史里涂掉,按 back 回不去
replace 跳转不留历史,这是和 href 跳转最核心的差别,也是面试常问点。