如何获取JavaScript中没有任何参数的URL?

时间:2011-06-06 20:10:22

标签: javascript

如果我使用:

alert(window.location.href);

我得到的一切包括查询字符串。有没有办法获得主网址部分,例如:

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

而不是

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

9 个答案:

答案 0 :(得分:235)

这是可能的,但您必须从location object

手动构建它
location.protocol + '//' + location.host + location.pathname

答案 1 :(得分:125)

每个答案都很复杂。这里:

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

即使是?如果不存在,它仍然会返回第一个参数,它将是您的完整URL,减去查询字符串。

它也是与协议无关的,这意味着你甚至可以将它用于像ftp,itunes.etc这样的东西。

答案 2 :(得分:14)

使用indexOf

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

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

答案 3 :(得分:5)

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

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

答案 4 :(得分:5)

您可以使用正则表达式:window.location.href.match(/^[^\#\?]+/)[0]

答案 5 :(得分:5)

我很晚才参加聚会,但是我不得不解决这个问题,因为我想分享财富。

const url = window.location.origin + window.location.pathname
//http://example.com/somedir/somefile/
在我们的测试案例中,

window.location.origin将为您提供基本URL:http://example.com

在我们的测试案例window.location.pathname

中,

/somedir/somefile将为您提供路由路径(在基本URL之后)。

解决方案2

您只需执行以下操作即可摆脱查询参数。

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

答案 6 :(得分:2)

如果查看the documentation,您可以从window对象中获取您感兴趣的属性,例如

protocol + '//' + hostname + pathname

答案 7 :(得分:2)

仅是使用URL的另一种选择

var theUrl = new URL(window.location.href);
theUrl.search = ""; //Remove any params
theUrl //as URL object
theUrl.href //as a string

答案 8 :(得分:0)

您可以连接originpathname,如果存在诸如example.com:80之类的端口,也将包括在内。

location.origin + location.pathname