如果我使用:
alert(window.location.href);
我得到的一切包括查询字符串。有没有办法获得主网址部分,例如:
http://mysite.com/somedir/somefile/
而不是
http://mysite.com/somedir/somefile/?foo=bar&loo=goo
答案 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)
您可以连接origin
和pathname
,如果存在诸如example.com:80
之类的端口,也将包括在内。
location.origin + location.pathname