consturl=newURL(window.location.href);url.searchParams.delete('abc');window.history.replaceState(null,'',url.toString());意思就是 删除 地址栏 地址里的 abc的参数 www.666.com?abc=123删完之后 就是 www.666.com这段代码的作用就是在不刷新页面的前提下,从浏览器地址栏中删除 URL 的某个查询参数(这里是abc)。
逐行解释:
consturl=newURL(window.location.href);- 创建一个
URL对象,解析当前页面的完整 URL(比如https://www.666.com?abc=123&def=456)。
url.searchParams.delete('abc');- 调用
URLSearchParams的.delete('abc')方法,移除查询字符串中名为abc的参数。 - 无论
abc有没有值(如?abc或?abc=123),都会被彻底删除。 - 其他参数(如
def=456)不受影响。
window.history.replaceState(null,'',url.toString());- 使用
history.replaceState()替换当前历史记录条目,将 URL 更新为删除abc后的新地址; null表示不存储额外状态数据;- 第二个参数是标题(现代浏览器基本忽略);
- 第三个参数是新的 URL(不含
abc); - 关键:这不会触发页面跳转或刷新!
举个例子:
原始 URL:
https://www.666.com?abc=123&xyz=789执行代码后,地址栏变成:
https://www.666.com?xyz=789如果原始 URL 是:
https://www.666.com?abc=123执行后就变成:
https://www.666.com✅ 完全符合你的描述。
补充说明
- 这种方式常用于:用户完成某个操作后(比如关闭弹窗、清除筛选条件),清理 URL 中的临时参数,保持地址干净。
- 相比
window.location.href = ...,它不会重新加载页面,用户体验更流畅。 - 如果你希望保留历史记录(点返回能回到带参数的状态),可以用
pushState而不是replaceState。
封装成函数(推荐复用)
functionremoveUrlParam(paramName){consturl=newURL(window.location.href);url.searchParams.delete(paramName);window.history.replaceState(null,'',url.toString());}// 使用removeUrlParam('abc');这样你就可以轻松删除任意参数了 ✅