如何不重载页面仅修改URL中的指定部分内容?
修改URL指定参数且不触发页面重载的实现方案
replaceState本身确实需要传入完整的目标URL,但你可以通过官方原生URL接口先解析当前地址,仅修改指定的参数部分后,再生成新的完整URL传给replaceState即可,不需要手动拼接整段地址,出错概率极低。
代码示例
// 解析当前页面的完整URL const currentUrl = new URL(window.location.href); // 仅修改returnurl参数的取值,示例替换为654321,可按需替换为你的目标值 currentUrl.searchParams.set('returnurl', '654321'); // 更新地址栏URL,无页面重载 window.history.replaceState(null, '', currentUrl);
注意事项
- 该操作只会修改地址栏显示的URL内容,不会触发页面刷新,也不会向服务器发起新请求
searchParams.set会自动兼容参数存在/不存在的场景:原URL有returnurl参数时直接覆盖值,没有该参数时会自动新增- 仅当修改后的URL和当前页面同域时,操作才会生效,不会触发跨域报错
内容的提问来源于stack exchange,提问作者likonen
相关产品推荐
相关产品推荐

