JavaScript页面跳转首选location.href或location.assign()以保留返回记录,location.replace()适用于无需返回的场景;传参优先用URLSearchParams配合encodeURIComponent编码查询参数,复杂状态存sessionStorage或localStorage,并注意异常处理与安全性。
JavaScript 实现页面跳转主要有三种常用方式:location.href、location.assign() 和 location.replace()。传递参数通常用 URL 查询字符串(query string)或 sessionStorage / localStorage,而保存状态则推荐结合 URL 参数与浏览器存储机制,兼顾可分享性与持久性。
三种跳转方法行为不同,影响用户点击“返回”按钮的体验:
window.location = 'xxx' 等价于 location.href,但语义不如后者清晰。最通用、可书签、可分享的方式是拼接 query string,尤其适合简单数据(如 ID、分类、分页号):
location.href = 'detail.html?id=123&name=' + encodeURIComponent('张三');
const params = new URLSearchParams(location.search); console.log(params.get('id'));
当要传对象、数组或多字段数据,或需跨跳转保持临时状态(如筛选条件、未提交表单),URL 不够用,可用浏览器存储:
sessionStorage.setItem('filters', JSON.stringify({ category: 'book', sort: 'date' }));
const filters = JSON.parse(sessionStorage.getItem('filters') || '{}');
null 或解析失败异常。实际项目中常混合使用,兼顾可追溯性与灵活性:
user/123),保证链接可直达;sessionStorage.setItem('fromSearch', 'true'); location.href = 'result.html?q=js';
不复杂但容易忽略细节:编码、历史栈管理、存储异常处理。按需组合 URL 传参与 sessionSto
rage,就能覆盖大多数跳转+状态传递需求。