Текущий URL без параметров, хэш, http (s)://

Я ищу аккуратный способ получить URL-адрес текущего документа в Javascript.

  • URL должен быть чистым от параметров (? parameter1 = bla & parameter2 = bla)
  • URL должен быть чистым от хэш-тегов (#jumppoint)
  • http/https следует удалить/объединить в http

Я знаю, что могу получить текущий URL-адрес с location.href, а затем использовать некоторые регулярные выражения, чтобы очистить его, но, возможно, есть лучшее/более чистое решение для избавления от мусора?

Ответ 1

Есть много других параметров, чем href в window.location. См. Полную ссылку здесь: https://developer.mozilla.org/en/DOM/window.location

То, что вы ищете как стартер, может быть window.location.hostname:

"имя хоста (без номера порта или квадрата Кронштейны)".

В примере URL http://[www.example.com]:80/search?q=devmo#test имя хоста будет www.example.com.

Если вы также хотите включить путь и заставить протокол http://, попробуйте:

'http://' + window.location.hostname + window.location.pathname;

В качестве примечания, отличный трюк, чтобы получить те же параметры из другого URL-адреса, что и window.location, заключается в создании пустого якоря:

var a = document.createElement('a');
a.href = 'http://www.example.com:80/search?q=devmo#test';

console.log('http://' + a.hostname + a.pathname);

Ответ 2

Ни один из данных ответов не касается того факта, что протокол может быть http или https, как в заголовке OP. Для этого я предлагаю:

document.location.protocol +"//"+ document.location.hostname + document.location.pathname

Ответ 4

У вас есть объект document.location, поэтому:

var oLoc = document.location,
    sUrl = oLoc.protocol + oLoc.hostname;
    // or "http://" + oLoc.hostname

Ответ 5

Вы можете использовать эти функции замены, чтобы удалить аргументы хэша и поиска и нормализовать https до http:

url = url.replace(/#[^#]*$/, "").replace(/\?[^\?]*$/, "").replace(/^https:/, "http:");

Или, если все, что вам действительно нужно, это домен и путь, вы можете просто использовать это:

window.location.hostname + window.location.pathname

Ответ 6

Попробуйте этот фрагмент:

if (!window.location.origin){
  // For IE
  window.location.origin = window.location.protocol + "//" + (window.location.port ? ':' + window.location.port : '');      
}

url = window.location.origin + window.location.pathname;
document.write('Origin url: ' + url);

Ответ 7

Эта страница показывает, что вы, вероятно, можете использовать window.location.host, чтобы получить интересующую вас часть. Я ее не тестировал, однако.

Ответ 8

Try:


window.location.hostname;