JavaScript用来改变浏览器地址栏 URL 的方法

window.location.replace(), window.location.href, 和 window.location.assign() 都是 JavaScript 用来改变浏览器地址栏 URL 并跳转到新页面的方式,但它们在 历史记录 处理上有一些不同。下面是它们的区别:

window.location.replace()

作用:
  • 用于加载一个新的 URL 替代当前页面。
  • 不会将当前页面添加到浏览器的历史记录中
何时使用:
  • 当你想要跳转到新页面,但不希望用户能够通过浏览器的"后退"按钮返回到当前页面时。
  • 比如,用户登录后,你可能不希望他们能通过点击"后退"按钮回到登录页。
示例:
javascript 复制代码
window.location.replace("https://www.example.com");
结果:
  • 用户跳转到 https://www.example.com
  • 如果用户点击"后退"按钮,不会返回到当前页面,因为当前页面没有保留在历史记录中。

window.location.href

作用:
  • 用于改变浏览器的 URL,跳转到新的页面。
  • 会将当前页面添加到浏览器的历史记录中
何时使用:
  • 当你希望跳转到新页面,并且用户仍然可以通过"后退"按钮返回到当前页面时。
示例:
javascript 复制代码
window.location.href = "https://www.example.com";
结果:
  • 用户跳转到 https://www.example.com
  • 如果用户点击"后退"按钮,会返回到当前页面,因为当前页面被保留在浏览器历史记录中。

window.location.assign()

作用:
  • 功能和 window.location.href 类似,用于加载新的 URL。
  • 会将当前页面添加到浏览器的历史记录中 ,与 href 相同。
何时使用:
  • 当你希望跳转到新页面,并且用户仍然能够通过"后退"按钮返回到当前页面时。它可以像 href 一样用来设置新的 URL。
示例:
javascript 复制代码
window.location.assign("https://www.example.com");
结果:
  • 用户跳转到 https://www.example.com
  • 如果用户点击"后退"按钮,会返回到当前页面,因为当前页面被保留在历史记录中。

总结区别

方法 历史记录行为 使用场景
window.location.replace() 不会将当前页面添加到历史记录中 不希望用户通过"后退"按钮返回当前页面
window.location.href 会将当前页面添加到历史记录中 希望用户能够通过"后退"按钮返回当前页面
window.location.assign() 会将当前页面添加到历史记录中 希望用户能够通过"后退"按钮返回当前页面

总结

  • 如果你需要避免页面跳转后用户能回到当前页面,使用 window.location.replace()
  • 如果你希望用户能够通过"后退"按钮返回到当前页面,则使用 window.location.hrefwindow.location.assign(),这两者的行为是相同的。
相关推荐
华仔啊14 分钟前
MyBatis-Plus 不只是简化CRUD!资深架构师总结的15个高阶用法
java·后端·mybatis
不爱吃糖的程序媛18 分钟前
Electron 智能文件分析器开发实战适配鸿蒙
前端·javascript·electron
Doro再努力23 分钟前
2025_11_14洛谷【入门1】数据结构刷题小结
前端·数据结构·算法
IT_陈寒41 分钟前
SpringBoot 3.2新特性实战:这5个隐藏技巧让你的应用性能飙升50%
前端·人工智能·后端
Han.miracle41 分钟前
Java EE --JUC
java·线程池·原子类·callable·semaphore·reentrantlcok
那我掉的头发算什么43 分钟前
【javaEE】多线程——线程安全初阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
flashlight_hi44 分钟前
LeetCode 分类刷题:3217. 从链表中移除在数组中存在的节点
javascript·数据结构·leetcode·链表
Java追光着1 小时前
React Native 自建 JS Bundle OTA 更新系统:从零到一的完整实现与踩坑记录
javascript·react native·react.js
努力往上爬de蜗牛1 小时前
react native 运行问题和调试 --持续更新
javascript·react native·react.js
yzp-1 小时前
Zookeeper 笔记
java·分布式·zookeeper