news 2026/4/15 17:05:24

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()就是最佳选择,简单可靠,用户体验最好。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 3:00:33

RMP-121D电源继电器

RMP-121D 电源继电器概述类型&#xff1a;电源继电器 / 通用工业继电器功能&#xff1a;通过控制端的低电压信号&#xff0c;控制电源线路的通断&#xff0c;实现负载的开关控制用途&#xff1a;广泛用于自动化控制、电源切换、保护电路及设备控制主要功能电源控制接收控制信号…

作者头像 李华
网站建设 2026/4/16 14:06:30

1769-L35E控制器

1769-L35E 控制器概述系列&#xff1a;Allen-Bradley MicroLogix 1500类型&#xff1a;紧凑型可编程逻辑控制器&#xff08;PLC&#xff09;功能&#xff1a;执行逻辑控制、定时、计数、数据处理和通讯任务应用&#xff1a;适合中小型自动化系统、机器控制和过程控制主要功能逻…

作者头像 李华
网站建设 2026/4/16 12:23:52

C4410590NOUI电源模块

C4410590NOUI 电源模块概述类型&#xff1a;工业控制电源模块功能&#xff1a;为控制系统及其扩展模块提供稳定的直流或交流电源应用&#xff1a;PLC、控制器、继电器板、传感器等工业自动化设备供电主要功能稳压供电将交流电&#xff08;AC&#xff09;或不稳定直流电源转换为…

作者头像 李华
网站建设 2026/4/16 2:50:56

Python在天文数据处理中的革命:PB级观测数据的实时分析

Python在天文数据处理中的革命&#xff1a;PB级观测数据的实时分析摘要随着现代天文观测技术的飞速发展&#xff0c;天文数据正以前所未有的速度增长。从射电望远镜阵列到空间望远镜&#xff0c;每天产生的数据量已达PB(拍字节)级别。面对如此庞大的数据流&#xff0c;传统的天…

作者头像 李华
网站建设 2026/4/16 16:10:02

【毕业设计】机器学习基于python卷积神经网络训练形状识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华