当前位置: 首页 > news >正文

JavaScript返回到上一页的三种方法

JavaScript 返回到上一页的三种常用方法

在网页开发中,实现“返回上一页”功能非常常见。JavaScript 提供了多种方式来实现,下面详细介绍三种最常用且可靠的方法,并附带优缺点对比和使用场景。

方法一:history.back()(最常用,推荐)
// 直接返回上一页,等同于点击浏览器“后退”按钮history.back();// 或者history.go(-1);

说明

  • history.back()history.go(-1)效果完全相同。
  • 会触发浏览器的历史记录后退,页面状态(如表单填写、滚动位置)通常能保持(取决于浏览器实现)。

示例(按钮点击返回):

<buttononclick="history.back()">返回上一页</button>

优点

  • 简单、直观。
  • 用户体验最好,模拟真实后退行为。
  • 支持页面状态恢复。

缺点

  • 如果当前页是历史记录的第一页,会无效(不会跳转)。
方法二:history.go(-1)(等同于 back)
history.go(-1);// 后退一步// history.go(-2); // 后退两步// history.go(1); // 前进一步

说明

  • history.go(n)中的 n 是整数,正数前进,负数后退。
  • history.back()完全等价,只是写法不同。

使用场景

  • 需要动态控制后退步数时更灵活。
方法三:window.location.href = document.referrer(根据来源页跳转)
if(document.referrer){window.location.href=document.referrer;}else{// 如果没有来源页(比如直接打开),跳转到指定页面window.location.href='/index.html';}

说明

  • document.referrer返回引发当前页面跳转的上一个页面的 URL(字符串)。
  • 直接设置location.href实现跳转。

完整安全示例

<buttononclick="goBack()">返回上一页</button><script>functiongoBack(){if(document.referrer&&document.referrer!==window.location.href){window.location.href=document.referrer;}else{// 备选方案:跳转到首页或指定页面window.location.href='/';}}</script>

优点

  • 可以明确知道要跳转到哪个页面。
  • 在某些单页应用(SPA)中更可控。

缺点

  • 如果用户是通过直接输入 URL、书签或搜索引擎进入当前页,document.referrer会为空。
  • 不会保留浏览器历史栈的“后退”状态(属于新跳转)。
  • 跨域时 referrer 可能被屏蔽(受 Referrer-Policy 影响)。
三种方法对比总结
方法代码是否模拟浏览器后退referrer 是否为空时行为是否保留页面状态推荐度
history.back() / go(-1)history.back()无效(停留在当前页)通常保留★★★★★
history.go(-1)history.go(-1)无效通常保留★★★★★
document.referrerlocation.href = referrer否(新跳转)需要手动处理备选页面不保留★★★
最佳实践建议
  1. 大多数场景优先使用history.back()
    <buttononclick="history.back()">返回</button>
  2. 需要兼容无来源页的情况,结合 referrer:
    functiongoBack(){if(history.length>1){history.back();}else{window.location.href='/';// 跳转到首页}}
  3. 移动端或单页应用(Vue/React)中常用history.back(),配合路由守卫更优雅。

总结:99% 的情况下,直接使用history.back()就是最佳选择,简单可靠,用户体验最好。

http://www.jsqmd.com/news/205910/

相关文章:

  • AI工厂生产安全隐患识别及预警系统:重构工厂隐患识别与预警新范式
  • 高次函数模型的选择与拟合解析,如何识别并拟合3+次函数(超详细,零基础可懂)
  • Linux中dd命令详解
  • _springboot基于vue的工厂车间管理系统(11646)
  • 一边是35岁危机,一边是AI高薪。普通程序员如何选对路、不掉队?
  • C# 里弹出“确定”“取消”对话框
  • springboot图书电子商务网站的设计与实现(11647)
  • SEO插件评分全绿但排名差丨3个真正的问题可能在这
  • 限时公开!6款AI论文神器实测,查重率低于5%!
  • 2026届校园招聘大战开启!阿里、京东、字节等大厂争抢哪类人才?揭秘校招最新趋势!
  • springboot社区医院管理系统(11648)
  • hadoop|贪心
  • 爆肝拆解TradingAgents项目!LLM在AI投研中到底扮演什么角色?小白程序员也能懂的金融AI实战
  • “【震惊】57%企业已投产AI Agent!LangChain最新报告:Coding Agents统治程序员日常,这些坑千万别踩!“
  • Linux---Tomcat服务器Varnish代理服务器
  • EasyGBS打造智能视频监控新体系
  • _基于springboot的二手车交易系统(11649)
  • 爆肝程序员必看!RAG 2.0实战全攻略:从零构建企业级AI原生投诉系统,小白也能秒变AI架构师!
  • EasyGBS重塑商业场所视频监控管理新模式
  • AI圈炸锅!DeepSeek-OCR黑科技:压缩10倍长文本,成本直降90%!VTC技术让大模型“过目不忘“,中科院发布权威评测
  • ue用tick通信执行方法 mcp铺垫
  • 电加热烘箱功能升级,2025年有实力的优质源头生产厂家推荐 - 品牌推荐大师
  • 家庭聚会喝什么酒?适配全年龄层的 8款优选酒清单 - 资讯焦点
  • 【干货】大模型记忆革命:HGMEM技术让AI推理能力提升73%,开发者必看
  • 2026绿化趋势分析,苗木批发基地的成长轨迹,白蜡/红叶石楠/青叶复叶槭/樱花/红叶李,苗木批发基地批发商排行榜 - 品牌推荐师
  • 震惊!AI大模型不是越大越好!ICML 2025最新研究:中小模型+海量文档=性能开挂,小白也能懂的省钱攻略
  • 留学党必看!英国留学中介TOP榜,精准匹配优质机构 - 留学机构评审官
  • Dify二开系列:从LightRAG到多模态RAG,全能化进化之路
  • 保姆级教程:Spring AI RAG知识库构建,让你的AI助手“满腹经纶“!
  • 基于Vue的民俗文化管理系统设计与达成04j02(程序 + 源码 + 数据库 + 调试部署 + 制作环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末