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


3005

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



Ответы:


3687

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

window.location.href 

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

document.URL;

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


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.



264

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

window.location.href

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

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

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

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


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 вы иногда есть нестандартный порт, который ломает его, если вы просто используете имя хоста и т. д.)



0

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

location.href.substring(0, location.href.lastIndexOf('/'));


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 );
});
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.