如何使用jQuery从location.href中删除/之后的末尾冗余锚点内容?
现有代码问题说明
你调用url_id.split('#')[1]仅返回step_4的原因是:split('#')会把完整URL按所有#切割为数组,你的示例URL切割后的结构为["https://localhost/test-project/", "step_4", "step_4", "step_4"],索引为1的项就是第一个#后的第一段内容,自然仅输出step_4。
基于window.location.href的实现方案
直接取切割后数组的第一项即可得到你需要的不带hash的基础路径:
var url_id = window.location.href; var baseUrl = url_id.split('#')[0]; console.log(baseUrl); // 输出 https://localhost/test-project/
如果需要兼容URL中同时存在查询参数和hash的场景,也可以用正则匹配替换所有hash内容,无论后面有多少个重复的#step_4都可以一次性移除:
var baseUrl = window.location.href.replace(/#.*/, '');
其他更可靠的实现方式
浏览器原生window.location对象内置了专用属性,不需要手动切割字符串,稳定性更高,不会因为URL中存在特殊字符导致切割出错:
- 如果你需要保留查询参数(即
?后面的内容)仅移除hash:
var baseUrl = window.location.origin + window.location.pathname + window.location.search;
- 如果你不需要保留查询参数,只需要基础路径:
var baseUrl = window.location.origin + window.location.pathname;
内容的提问来源于stack exchange,提问作者Jignesh Panchal
相关产品推荐
相关产品推荐

