window.location未替换但已串联

esc*_*nxr 3 javascript

我有以下代码:

$(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是串联的而不是被替换,您有什么主意吗?

Bar*_*chs 5

window.location.href = 'someurl'工作方式与单击相同someurl<a>标签。

使用相对路径时(即,没有/开头),浏览器会将URL链接到现有URL。

您的情况的简单解决方案是/

window.location.href = "/projects/" + projectId;
Run Code Online (Sandbox Code Playgroud)

但是请注意,如果将站点移到另一个位置,这可能会导致站点不再工作。这就是为什么许多Web框架使用完整URL和某种基本URL来正确获得链接的原因。