如果我使用:

alert(window.location.href);

我得到了包括查询字符串在内的所有信息。是否有一种方法只得到主url部分,例如:

http://mysite.com/somedir/somefile/

而不是

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

当前回答

你可以连接原点和路径名,如果有一个端口,如example.com:80,这也将包括在内。

location.origin + location.pathname

其他回答

var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

如果你查看文档,你可以从窗口对象中获取你感兴趣的属性。

protocol + '//' + hostname + pathname

你可以连接原点和路径名,如果有一个端口,如example.com:80,这也将包括在内。

location.origin + location.pathname

使用indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

我迟到了,但我最近不得不解决这个问题,我想我应该分享财富。

const url = window.location.origin + window.location.pathname
//http://example.com/somedir/somefile/

Window.location.origin将为您提供基本url,在我们的测试用例中是:http://example.com

Window.location.pathname将为您提供路由路径(在基本url之后),在我们的测试用例/somedir/somefile中

解决方案2

您可以简单地执行以下操作来删除查询参数。

Const url = window.location.href.split('?')[0]