Текущий URL без параметров, хеш, http (s): // - PullRequest
31 голосов
/ 01 марта 2012

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

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

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

Ответы [ 8 ]

54 голосов
/ 01 марта 2012

Есть много других параметров, кроме 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);
32 голосов
/ 29 июля 2013

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

document.location.protocol +"//"+ document.location.hostname + document.location.pathname
5 голосов
/ 01 марта 2012

Объект Местоположение получил то, что вам нужно

window.location.hostname + window.location.pathname
2 голосов
/ 22 января 2015

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

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);
2 голосов
/ 01 марта 2012

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

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

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

window.location.hostname + window.location.pathname
2 голосов
/ 01 марта 2012

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

var oLoc = document.location,
    sUrl = oLoc.protocol + oLoc.hostname;
    // or "http://" + oLoc.hostname
0 голосов
/ 01 марта 2012

Попробуйте:


window.location.hostname;

0 голосов
/ 01 марта 2012

На этой странице указано, что вы, вероятно, могли бы использовать window.location.host для получения той части, которая вам действительно интересна. Однако я не проверял ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...