如何使用JavaScript获取浏览器回退时的上一个URL?
实现方法及示例代码
浏览器回退操作属于历史导航,普通的document.referrer无法正确获取回退场景的上一页URL(因为回退不是HTTP跳转,referrer记录的是初始跳转来源),可以通过两种方式实现需求:
方法一:通过History API主动存储上页URL(需控制跳转前页面)
如果能修改跳转前页面(Stackoverflow)的代码,可在跳转时将当前URL存入历史状态:
// 在Stackoverflow页面执行跳转逻辑时 const currentPageUrl = window.location.href; // 用pushState存入当前URL到历史状态,再跳转至Google history.pushState({ prevUrl: currentPageUrl }, '', 'https://www.google.com');
在Google页面监听popstate事件,点击回退时即可从状态中取出上页URL:
// 在Google页面添加监听 window.addEventListener('popstate', (event) => { if (event.state?.prevUrl) { console.log('上一页URL:', event.state.prevUrl); // 这里可执行后续业务逻辑 } });
方法二:通过Performance API获取导航历史(无需控制跳转前页面)
如果无法修改跳转前页面的代码,可在回退后的页面(Stackoverflow)利用浏览器的Performance接口获取导航信息:
// 在Stackoverflow页面添加监听,页面加载完成后检查导航类型 window.addEventListener('load', () => { const navEntry = performance.getEntriesByType('navigation')[0]; // 判断是否为回退/前进导航 if (navEntry.type === 'back_forward') { const previousPageUrl = navEntry.previousUrl; console.log('上一页URL:', previousPageUrl); } });
注意:该方法依赖
PerformanceNavigationTiming接口,现代主流浏览器均支持,旧版浏览器需做兼容性判断。
内容的提问来源于stack exchange,提问作者user20983281
相关产品推荐
相关产品推荐

