如何在JavaScript中没有任何参数的URL?
如果我使用:
alert(window.location.href);
我得到一切,包括查询string。 有没有办法只是得到主要的url部分,例如:
http://mysite.com/somedir/somefile/
代替
http://mysite.com/somedir/somefile/?foo=bar&loo=goo
这是可能的,但你必须从location
对象手动build立它:
location.protocol + '//' + location.host + location.pathname
每个答案都相当复杂。 这里:
var url = window.location.href.split('?')[0];
即使是一个? 不存在,它仍然会返回第一个参数,这将是您的完整URL,减去查询string。
这也是协议不可知的,这意味着你甚至可以将它用于诸如ftp,itunes.etc之类的东西。
使用indexOf
var url = "http://mysite.com/somedir/somefile/?aa"; if (url.indexOf("?")>-1){ url = url.substr(0,url.indexOf("?")); }
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo" url.substring(0,url.indexOf("?"));
您可以使用正则expression式: window.location.href.match(/^[^\#\?]+/)[0]
如果你看一下文档,你可以从window
对象中获取你感兴趣的属性
protocol + '//' + hostname + pathname
使用window.location的答案将获得当前的url,但不会工作时使用服务器端的JavaScript,其中窗口是未定义的或任意的urlinput。
为了解决这个问题,我写了一个简单的组件 ,允许你传入任何urlstring。 当然,如果你传入window.location,它也会在当前页面上工作。
您可以使用parseUrl方法将urlparsing为对象:
var urlObject = parseUrl('http://example.com/somedir/somefile/?foo=bar&loo=goo');
要么
var urlObject = parseUrl(window.location);
然后使用该对象的属性重新创build所需的url:
var newUrl = urlObject.protocol + '//' + urlObject.hostname + urlObject.path;
欢迎您导入组件并将其用于您的项目中。