我有以下代码:
$(window).ready(function() {
var url = window.location.href;
if (url.includes("#/projet/")) {
projectId = url.substring(url.indexOf("#")+1).split("/").slice(2, 3).toString();
window.location.href = "projects/" + projectId;
};
})
Run Code Online (Sandbox Code Playgroud)
我被重定向了,但是window.location没有被替换,只是被连接了。例如,如果我的网址是localhost:3000/users/212323/dashboard,则在javascript重定向后,我得到的localhost:3000/users/212323/projects/123456不是localhost:3000/projects/123456
我不明白为什么href是串联的而不是被替换,您有什么主意吗?
window.location.href = 'someurl'工作方式与单击相同someurl的<a>标签。
使用相对路径时(即,没有/开头),浏览器会将URL链接到现有URL。
您的情况的简单解决方案是/:
window.location.href = "/projects/" + projectId;
Run Code Online (Sandbox Code Playgroud)
但是请注意,如果将站点移到另一个位置,这可能会导致站点不再工作。这就是为什么许多Web框架使用完整URL和某种基本URL来正确获得链接的原因。