Текущий 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
Ответ 3
Объект местоположения получил то, что вам нужно
window.location.hostname + window.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;