Получить текущий URL с помощью JavaScript?

3005

Все, что я хочу, это получить URL сайта. Не тот URL, который взят из ссылки. При загрузке страницы мне нужно иметь возможность получить полный, текущий URL-адрес веб-сайта и установить его как переменную для использования, как мне угодно.

Питер Мортенсен
источник

Ответы:

3687

Использование:

window.location.href 

Как отмечено в комментариях, строка ниже работает, но она содержит ошибки для Firefox.

document.URL;

Смотрите URL типа DOMString, только для чтения .

Peter Mortensen
источник
142
В Firefox 12 document.URLсвойство не обновляется после window.locationякоря (#), а обновляется window.location.href. Я собрал демонстрационную версию здесь: jsfiddle.net/PxgKy Я не тестировал другие версии Firefox. В document.URLChrome 20 и IE9 проблем с использованием не обнаружено.
Тельмо Маркес
88
также вы можете получить хозяин и четко window.location.hostwindow.location.href.toString().split(window.location.host)[1]
определить
8
и что document.baseURIтогда? В основном есть 3 способа получить URL document.baseURI, document.URL, & location.
Мухаммед Умер
20
-1: если у вас есть рамка, изображение или форма, name="URL"тогда это свойство будет затенено documentобъектом, и ваш код сломается. В этом случае document.URLбудет ссылаться на узел DOM. Лучше использовать свойства глобального объекта как в window.location.href.
Рой Тинкер
13
«window.location.href» за победу
GabrielBB
662

Доступ к информации URL

JavaScript предоставляет вам множество методов для извлечения и изменения текущего URL, который отображается в адресной строке браузера. Все эти методы используют Locationобъект, который является свойством Windowобъекта. Вы можете создать новый Locationобъект с текущим URL следующим образом:

var currentLocation = window.location;

Основная структура URL

<protocol>//<hostname>:<port>/<pathname><search><hash>
  • протокол: указывает имя протокола, которое будет использоваться для доступа к ресурсу в Интернете. (HTTP (без SSL) или HTTPS (с SSL))

  • hostname: имя хоста указывает хост, которому принадлежит ресурс. Например, www.stackoverflow.com. Сервер предоставляет услуги, используя имя хоста.

  • порт: номер порта, используемый для распознавания определенного процесса, которому Интернет-сообщение или другое сетевое сообщение должно быть переадресовано при поступлении на сервер.

  • pathname: путь содержит информацию о конкретном ресурсе хоста, к которому веб-клиент хочет получить доступ. Например, /index.html.

  • поиск: строка запроса следует за компонентом пути и предоставляет строку информации, которую ресурс может использовать для каких-либо целей (например, в качестве параметров для поиска или в качестве данных для обработки).

  • hash: Якорная часть URL, включает знак хеша (#).

С помощью этих Locationсвойств объекта вы можете получить доступ ко всем этим компонентам URL, а также к тому, что они могут устанавливать или возвращать:

  • href - весь URL
  • протокол - протокол URL
  • host - имя хоста и порт URL
  • hostname - имя хоста URL
  • порт - номер порта, который сервер использует для URL
  • pathname - путь к URL
  • search - поисковая часть URL
  • hash - якорная часть URL

Я надеюсь, что вы получили свой ответ ..

Нихил Агравал
источник
7
Они не являются «Методы» window.location, но свойства, и здесь мы имеем пример : var stringPathName = window.location.pathname.
Питер Краусс
@FabioC. Вы можете удалить его с помощью substring. Тем не менее, это может быть полезно, если вы хотите использовать перенаправление document.location = "/page.html";перенаправит на корневую страницуpage.html
FindOut_Quran
1
Это отвечает не только на поставленный вопрос. Фактически, я искал, вероятно, около месяца назад хороший способ извлечь одну или несколько конкретных частей из строки URL (я думаю, что это была, вероятно, текущая страница, которую я пытался получить), и хотя другие вопросы были больше на - цель, их ответы были не так полезны и прямолинейны для этой цели, как этот.
Panzercrisis
1
Одно быстрое предложение: в базовой структуре URL, описанной выше, есть место для search, но в списке описаний ниже оно называется a query. Возможно, они могут быть согласованы или могут быть добавлены дополнительные пояснения.
Panzercrisis
1
Это называется «поиск», а не «запрос»
Apollo Data
320

Используйте window.locationдля чтения и записи доступ к объекту местоположения, связанному с текущим кадром. Если вы просто хотите получить адрес в виде строки только для чтения, вы можете использовать ее document.URL, которая должна содержать то же значение, что и window.location.href.

Christoph
источник
19
см. также stackoverflow.com/questions/2430936/…
Кристоф
264

Получает URL текущей страницы:

window.location.href
Zanoni
источник
3
Обратите внимание, что это местоположение окна, а не документа.
Гамбо
16
Это то же самое. Полный текущий URL ссылается на путь к документу (внешний адрес).
Занони
2
Это стандартизировано как document.url? (Я имею в виду что-то вроде документа w3c)
chendral
documentявляется корнем дерева документа, определенного спецификацией. windowобычно эквивалентно, но это может быть не при каких-то странных обстоятельствах.
broinjc
57

ОК, получить полный URL текущей страницы легко, используя чистый JavaScript. Например, попробуйте этот код на этой странице:

window.location.href;
// use it in the console of this page will return
// http://stackoverflow.com/questions/1034621/get-current-url-in-web-browser"

window.location.hrefСвойство возвращает URL текущей страницы.

document.getElementById("root").innerHTML = "The full URL of this page is:<br>" + window.location.href;
<!DOCTYPE html>
<html>

<body>
  <h2>JavaScript</h2>
  <h3>The window.location.href</h3>
  <p id="root"></p>
</body>

</html>

Просто неплохо бы упомянуть и это:

  • если вам нужен относительный путь, просто используйте window.location.pathname;

  • если вы хотите получить имя хоста, вы можете использовать window.location.hostname;

  • и если вам нужно получить протокол отдельно, используйте window.location.protocol

    • Кроме того , если страница имеет hashтег, вы можете получить его любит: window.location.hash.

Так что window.location.hrefобрабатывает все сразу ...

window.location.protocol + '//' + window.location.hostname + window.location.pathname + window.location.hash === window.location.href;
    //true

Также использование windowне требуется, если уже в области видимости окна ...

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

location.protocol

location.hostname

location.pathname

location.hash

location.href

Получить текущий URL с помощью JavaScript

Алиреза
источник
window.location.protocol + '//' + window.location.hostname + window.location.pathname + window.location.hash === window.location.href; не всегда правда! В window.location.pathname отсутствуют параметры GET.
AssassiN
40

Чтобы получить путь, вы можете использовать:

console.log('document.location', document.location.href);
console.log('location.pathname',  window.location.pathname); // Returns path only
console.log('location.href', window.location.href); // Returns full URL

Сангит Шах
источник
35

Откройте Инструменты разработчика , введите следующее в консоли и нажмите Enter .

window.location

Пример: ниже приведен скриншот результата на текущей странице.

введите описание изображения здесь

Хватай то, что тебе нужно отсюда. :)

TMH
источник
29

Использование: window.location.href.

Как отмечено выше, document.URL не обновляется при обновлении window.location. Смотрите MDN .

Дориан
источник
21
  • Используйте, window.location.hrefчтобы получить полный URL.
  • Используйте, window.location.pathnameчтобы получить URL, покидающий хост.
Кишор
источник
4
window.location.pathname не включает запрос и фрагмент хеша
OMGPOP
10
var currentPageUrlIs = "";
if (typeof this.href != "undefined") {
       currentPageUrlIs = this.href.toString().toLowerCase(); 
}else{ 
       currentPageUrlIs = document.location.toString().toLowerCase();
}

Приведенный выше код также может помочь кому-то

Рохан Патил
источник
2
Вы применили .toLowerCase () к URL, который фактически меняет его. Некоторые серверы чувствительны к регистру (Linux и т. Д.)
AnthonyVO
Вы должны многословно использовать window.href. Этот код работает только в контексте, где это окно ===, но это не всегда так, особенно если кто-то вставил это решение.
Deadboy
Это не "некоторые" серверы, которые чувствительны к регистру. Это большинство серверов. Поэтому я согласен с AnthonyVO: изменение регистра URL - очень плохая идея.
Mivk
Вы не можете уменьшить () URL, будучи уверенным, что не сломаете его !!! Если url есть http://www.server.com/path/to/Script.php?option=A1B2C3, если файловая система чувствительна к регистру (Linux / Unix), не обязательно, что Script.php и script.php одинаковы. И даже если не чувствителен к регистру (Windows, некоторые Mac OS), ?option=A1B2C3это не то же самое ?option=a1b2c3, или даже ?Option=A1B2C3. Только сервер нечувствителен к регистру: www.server.com или www.SeRvEr.cOm одинаковы.
FrancescoMM
8

Добавление результата для быстрого ознакомления

window.location;

 Location {href: "/programming/1034621/get-the-current-url-with-javascript",
 ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ, …}

document.location

  Location {href: "/programming/1034621/get-the-current-url-with-javascript", 
ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ
, …}

window.location.pathname

"/questions/1034621/get-the-current-url-with-javascript"

window.location.href

"/programming/1034621/get-the-current-url-with-javascript"

location.hostname

"stackoverflow.com"
Хите саху
источник
7

Для полного URL со строками запроса:

document.location.toString().toLowerCase();

Для хоста URL:

window.location
Сайед Насир Аббас
источник
11
Вы применили .toLowerCase () к URL, который фактически меняет его. Некоторые серверы чувствительны к регистру (Linux и т. Д.)
AnthonyVO
Как уже говорилось, вы не можете toLowerCase () URL, не нарушая его !!! Если URL-адрес server.com/path/to/Script.php?option=A1B2C3 , если файловая система чувствительна к регистру (Linux / Unix), не обязательно, что Script.php и script.php одинаковы. И даже если регистр не чувствителен (Windows, некоторые Mac OS), «option = A1B2C3» - это не то же самое, что «option = a1b2c3» или даже «Option = A1B2C3». Только сервер нечувствителен к регистру: www.server.com или www.SeRvEr.cOm одинаковы.
FrancescoMM
Спасибо AnthonyVO за указание на это. Мы можем использовать только document.location.toString (), чтобы получить полный URL. toLowerCase () должен был сравниваться как indexOf в вашем скрипте.
Сайед Насир Аббас
4

В jstl мы можем получить доступ к текущему пути URL, используя pageContext.request.contextPath. Если вы хотите сделать Ajax-вызов, используйте следующий URL.

url = "${pageContext.request.contextPath}" + "/controller/path"

Пример: для страницы http://stackoverflow.com/posts/36577223это даст http://stackoverflow.com/controller/path.

Малеен Абевардана
источник
4

Способ получить текущее местоположение объекта window.location .

Сравните это с тем document.location, что первоначально вернул только текущий URL в виде строки. Вероятно, чтобы избежать путаницы, document.locationбыл заменен наdocument.URL .

И все современные браузеры document.locationсоответствуют window.location.

На самом деле, для кросс-браузерной безопасности, вы должны использовать, window.locationа не document.location.

Иосип Ивич
источник
3

Ответ Nikhil Agrawal хорош, просто добавив небольшой пример, который вы можете сделать в консоли, чтобы увидеть различные компоненты в действии:

введите описание изображения здесь

Если вы хотите, чтобы базовый URL-адрес без пути или параметра запроса (например, для выполнения запросов AJAX против работал как на рабочих / промежуточных, так и на производственных серверах), window.location.originлучше всего, поскольку он поддерживает протокол и дополнительный порт (в разработке Django вы иногда есть нестандартный порт, который ломает его, если вы просто используете имя хоста и т. д.)

Apollo Data
источник
0
   location.origin+location.pathname+location.search+location.hash;
زياد
источник
0

Вы можете получить полную ссылку на текущей странице location.href и получить ссылку на текущий контроллер, используя:

location.href.substring(0, location.href.lastIndexOf('/'));
Халед Харби
источник
0

Получение текущего URL с помощью JavaScript:

  • window.location.toString ();

  • window.location.href

Хасиб Камаль
источник
0

если вы ссылаетесь на конкретную ссылку с идентификатором, этот код может вам помочь.

$(".disapprove").click(function(){
    var id = $(this).attr("id");

    $.ajax({
        url: "<?php echo base_url('index.php/sample/page/"+id+"')?>",
        type: "post",
        success:function()
        {
            alert("The Request has been Disapproved");
            window.location.replace("http://localhost/sample/page/"+id+"");
        }
    });
});

Я использую здесь ajax для отправки идентификатора и перенаправления страницы с помощью window.location.replace . просто добавьте атрибут, id=""как указано.

любопытство
источник
-2

Во-первых, проверьте, что страница полностью загружена в

browser,window.location.toString();

window.location.href

затем вызвать функцию, которая принимает URL, переменную URL и печатает на консоли,

$(window).load(function(){
   var url = window.location.href.toString();
   var URL = document.URL;
   var wayThreeUsingJQuery = $(location).attr('href');
   console.log(url);
   console.log(URL);
   console.log(wayThreeUsingJQuery );
});
Ашиш Камбл
источник