如果我使用:
alert(window.location.href);
我得到了包括查询字符串在内的所有信息。是否有一种方法只得到主url部分,例如:
http://mysite.com/somedir/somefile/
而不是
http://mysite.com/somedir/somefile/?foo=bar&loo=goo
如果我使用:
alert(window.location.href);
我得到了包括查询字符串在内的所有信息。是否有一种方法只得到主url部分,例如:
http://mysite.com/somedir/somefile/
而不是
http://mysite.com/somedir/somefile/?foo=bar&loo=goo
当前回答
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"
url.substring(0,url.indexOf("?"));
其他回答
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"
url.substring(0,url.indexOf("?"));
每个答案都相当令人费解。在这里:
var url = window.location.href.split('?')[0];
即使一个?不存在,它仍然会返回第一个参数,这将是你的完整URL,减去查询字符串。
它也是协议无关的,这意味着你甚至可以用它来做ftp、itunes等事情。
你可以连接原点和路径名,如果有一个端口,如example.com:80,这也将包括在内。
location.origin + location.pathname
我迟到了,但我最近不得不解决这个问题,我想我应该分享财富。
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]
这是可能的,但你必须手动从location对象构建它:
location.protocol + '//' + location.host + location.pathname