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.mzph.cn/news/1119265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

艾体宝案例 | ArangoDB赋能电商个性化推荐:精准匹配需求,拓展增长空间

在电商行业竞争日趋激烈的当下&#xff0c;个性化推荐已成为平台提升用户体验、拉动转化增长的重要手段。传统推荐方案往往存在“重行为轻语义”或“重语义轻关联”的局限——要么主要依赖用户历史行为进行匹配&#xff0c;难以有效挖掘潜在需求&#xff1b;要么侧重语义相似度…

_springboot基于vue的工厂车间管理系统(11646)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

Linux中dd命令详解

Linux 中 dd 命令详解&#xff08;全面版&#xff09; dd 是 Linux 中一个非常强大且危险的低级数据复制和转换工具&#xff0c;全称 “data duplicator” 或 “disk destroyer”&#xff08;因误操作可毁盘而得外号&#xff09;。它以块为单位直接读写设备或文件&#xff0c;…

高次函数模型的选择与拟合解析,如何识别并拟合3+次函数(超详细,零基础可懂)

当数据可能符合三次&#xff08;yax3bx2cxdyaxbxcxdyax3bx2cxd&#xff09;、四次&#xff08;yax4bx3cx2dxeyax⁴bxcxdxeyax4bx3cx2dxe&#xff09;甚至五次函数时&#xff0c;核心思路是&#xff1a;先通过可视化误差指标判断函数“复杂度”&#xff0c;再用“特征升维线性回…

一边是35岁危机,一边是AI高薪。普通程序员如何选对路、不掉队?

35岁&#xff0c;程序员的十字路口&#xff0c;焦虑与机遇并存。技术浪潮汹涌&#xff0c;经验与智慧沉淀&#xff0c;适者生存。AI红利&#xff0c;工具赋能&#xff0c;引领未来。 35岁程序员危机&#xff0c;时代洪流中的思考 一、年龄与技能的双重焦虑 技术浪潮的冲击。新技…

C# 里弹出“确定”“取消”对话框

C# 中弹出“确定”“取消”对话框的几种常用方法 C# 中最常用、最简单的弹出“确定/取消”对话框就是使用 MessageBox 类&#xff08;位于 System.Windows.Forms 命名空间&#xff09;。以下是详细说明和示例。 方法一&#xff1a;最常用 - MessageBox.Show&#xff08;推荐&…

springboot图书电子商务网站的设计与实现(11647)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

SEO插件评分全绿但排名差丨3个真正的问题可能在这

当你的SEO插件显示所有指标都达标时&#xff0c;网站排名却纹丝不动&#xff0c;这种落差感可能比优化失误更让人焦虑。 事实上&#xff0c;像Yoast这类工具的“全绿评分”只是SEO的“基础体检”&#xff0c;很多运营者陷入“评分陷阱”&#xff0c;误以为标题长度合格、关键词…

限时公开!6款AI论文神器实测,查重率低于5%!

紧急预警&#xff1a;论文DDL只剩72小时&#xff1f;这些工具能救你&#xff01; 凌晨3点的图书馆、导师催稿的红色感叹号、查重报告上飘红的“30%重复率”——这是不是你现在的真实写照&#xff1f; 毕业倒计时最后10天&#xff0c;论文卡壳延毕风险&#xff01;你以为“慢慢…

2026届校园招聘大战开启!阿里、京东、字节等大厂争抢哪类人才?揭秘校招最新趋势!

日前&#xff0c;阿里、京东、字节跳动、美团、小米、滴滴等头部互联网科技公司相继启动2026届校园招聘计划&#xff0c;累计招聘人数超5万。 从各企业发布的招聘信息来看&#xff0c;AI类岗位占比显著提升&#xff0c;成为本次校招的核心亮点。 那么&#xff0c;哪类AI人才受…

springboot社区医院管理系统(11648)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

爆肝拆解TradingAgents项目!LLM在AI投研中到底扮演什么角色?小白程序员也能懂的金融AI实战

对于LLM投研的很多项目&#xff0c;如果只是用不同角色的agents各自在不同角度调研&#xff0c;然后展开辩论或写报告&#xff0c;最后有个拿主意的LLM这样的&#xff0c;实际上感觉至少是要你提前是选好股的&#xff0c;否则就缺少横向对比其他股票的机会&#xff0c;会错判相…

“【震惊】57%企业已投产AI Agent!LangChain最新报告:Coding Agents统治程序员日常,这些坑千万别踩!“

你有没有这种体验&#xff1a;一个 Agent demo 看起来无所不能——会查资料、会写代码、会调用工具、还会自己决定下一步。但一到真要上线&#xff0c;你就突然开始焦虑&#xff1a;它会不会胡说&#xff1f;会不会慢到让人崩溃&#xff1f;会不会一不小心越权操作&#xff1f;…

EasyGBS打造智能视频监控新体系

在当今快速发展的科技时代&#xff0c;视频监控技术作为安全防范的重要手段&#xff0c;已经广泛应用于各行各业。从公共场所的安全监控到企业内部的生产监管&#xff0c;再到智能家居的日常防护&#xff0c;视频监控无处不在地守护着我们的安全。然而&#xff0c;随着监控规模…

Linux---Tomcat服务器Varnish代理服务器

Linux 上配置 Varnish 作为 Tomcat 服务器的反向代理 Varnish 是一款高性能的 HTTP 加速器和反向代理缓存服务器&#xff0c;常用于前端缓存动态内容&#xff08;如 Java Web 应用&#xff09;&#xff0c;减少 Tomcat 的负载。Tomcat 是 Java 应用的容器&#xff0c;通常运行…

爆肝程序员必看!RAG 2.0实战全攻略:从零构建企业级AI原生投诉系统,小白也能秒变AI架构师!

面向开发者的共识正在形成&#xff1a;在企业场景里&#xff0c;RAG 的上限从来不由“能不能生成”决定&#xff0c;而由“能不能拿到足够、正确、可引用的证据”决定。2025 年以来&#xff0c;业界把这套工程化升级称为 RAG 2.0&#xff1a;混合检索、重排序、多模态、图结构、…

_基于springboot的二手车交易系统(11649)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

Java常用的日期和时间格式化转换符

Java 中常用的日期和时间格式化转换符大全 Java 中日期和时间的格式化主要通过以下两个类实现&#xff1a; 旧 API&#xff08;Java 8 之前&#xff09;&#xff1a;java.text.SimpleDateFormat新 API&#xff08;Java 8 推荐&#xff09;&#xff1a;java.time.format.DateT…

EasyGBS重塑商业场所视频监控管理新模式

在商业综合体、连锁商超、特色商业街等现代商业场所中&#xff0c;视频监控系统早已不是简单的“安全守卫”&#xff0c;更成为支撑精细化运营、提升服务品质的核心基础设施。然而&#xff0c;传统视频监控普遍存在设备异构、协议混乱、智能不足、数据沉睡等痛点&#xff0c;难…