history.pushState路径跳转问题:如何将URL从url.com/x/y直接修改为url.com/z?
实现URL从url.com/x/y跳转到url.com/z的方法
嘿,这个问题其实很好解决,核心就在于你传给history.pushState的第三个路径参数的写法~
当你执行history.pushState({"z":"z"}, "" , "z")时,传入的"z"是相对当前页面路径的相对路径——当前页面路径是/x/y,浏览器会自动把相对路径z解析成/x/z,这就是为什么URL变成了url.com/x/z。
要让URL直接跳转到根目录下的z,你可以用下面两种方法:
方法1:使用根相对路径(推荐)
在路径前加上斜杠/,告诉浏览器从域名的根目录开始解析这个路径:
history.pushState({"z":"z"}, "", "/z");
执行这段代码后,地址栏的URL就会变成url.com/z,而且不会触发页面刷新,完美符合pushState的无刷新特性。
方法2:使用完整绝对URL
如果你需要明确指定完整的域名(比如特殊的跨域名场景,不过同域名下不太推荐),也可以直接传入完整的URL:
history.pushState({"z":"z"}, "", "https://url.com/z");
这种写法虽然有效,但灵活性较差,一旦域名变更就得修改代码,所以优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者The S.
相关产品推荐
相关产品推荐

