Если я использую:
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
Это возможно, но вам нужно будет создать его вручную из объекта location
:
location.protocol + '//' + location.host + location.pathname
Каждый ответ довольно запутан. Здесь:
var url = window.location.href.split('?')[0];
Даже если a? нет, он все равно вернет первый аргумент, который будет вашим полным URL-адресом, минус строка запроса.
Это также протокол-агностик, что означает, что вы даже можете использовать его для таких вещей, как 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("?"));
Вы можете использовать регулярное выражение: window.location.href.match(/^[^\#\?]+/)[0]
Если вы посмотрите документацию, вы можете взять только те объекты, которые вас интересуют, из объекта window
i.e.
protocol + '//' + hostname + pathname
Ответы, использующие window.location, будут работать для получения текущего URL-адреса, но не будут работать при использовании JavaScript-сервера на стороне сервера, где это окно undefined или с произвольными вводами url.
Чтобы решить эту проблему, я написал простой компонент который позволяет передавать любую строку URL-адреса. Конечно, он также будет работать на текущей странице, если вы перейдете в window.location.
Вы можете проанализировать URL-адрес в объекте с помощью метода parseUrl:
var urlObject = parseUrl('http://example.com/somedir/somefile/?foo=bar&loo=goo');
или
var urlObject = parseUrl(window.location);
а затем заново создайте URL-адрес, который вы хотите использовать с помощью свойств объекта:
var newUrl = urlObject.protocol + '//' + urlObject.hostname + urlObject.path;
Вы можете импортировать компонент и использовать его в своем проекте.
Вы можете объединить origin
и pathname
, если есть порт, например example.com:80
, который также будет включен.
location.origin + location.pathname