Отримати поточну URL-адресу за допомогою JavaScript?


3003

Все, що я хочу, - це отримати URL-адресу веб-сайту. Не URL-адреса, взята з посилання. На завантаженні сторінки мені потрібно мати можливість захопити повну, поточну URL-адресу веб-сайту та встановити її як змінну, яку я можу робити, як мені подобається.



Відповіді:


3684

Використання:

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.hostіwindow.location.href.toString().split(window.location.host)[1]
ali youhannaei

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" на перемогу
ГабріельББ

663

Доступ до інформації про URL

JavaScript надає вам безліч методів пошуку та зміни поточної URL-адреси, яка відображається в адресному рядку браузера. Усі ці методи використовують Locationоб’єкт, який є властивістю Windowоб'єкта. Ви можете створити новий Locationоб’єкт із поточною URL-адресою:

var currentLocation = window.location;

Основна структура URL-адреси

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

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

  • port: номер порту, який використовується для розпізнавання певного процесу, до якого слід пересилати Інтернет або інше мережеве повідомлення, коли воно надходить на сервер.

  • ім'я шляху: шлях дає інформацію про конкретний ресурс у хості, до якого веб-клієнт хоче отримати доступ. Наприклад, /index.html.

  • пошук: рядок запиту слідує за компонентом шляху і надає рядок інформації, яку ресурс може використовувати для певної мети (наприклад, як параметри для пошуку або як дані, що підлягають обробці).

  • хеш: частина прив’язки URL, включає знак хеша (#).

За допомогою цих Locationвластивостей об’єкта ви можете отримати доступ до всіх цих компонентів URL-адреси та того, що вони можуть встановити або повернути:

  • href - вся URL-адреса
  • Protocol - протокол URL-адреси
  • host - ім'я хоста та порт URL
  • ім'я хоста - ім'я хоста URL-адреси
  • port - номер порту, який сервер використовує для URL-адреси
  • ім'я шляху - назва шляху URL-адреси
  • search - частина запиту URL-адреси
  • хеш - частина прив’язки 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, але в списку описів нижче воно називається а query. Можливо, або вони можуть бути узгоджені, або додаткові пояснення можуть бути додані.
Panzercrisis

1
Це називається "пошук", а не "запит"
дані Apollo

320

Використовувати window.locationдля доступу для читання та запису до об'єкта локації, пов'язаного з поточним кадром. Якщо ви просто хочете отримати адресу у вигляді рядка лише для читання, ви можете використовувати document.URL, яке має містити те саме значення, що і window.location.href.



264

Отримує URL-адресу поточної сторінки:

window.location.href

3
Зауважте, що це місце вікна, а не документ.
Gumbo

16
Це те саме. Повна поточна URL-адреса стосується шляху документа (зовнішня адреса).
Заноні

2
Це стандартизовано як document.url? (Я маю на увазі щось на зразок документа w3c)
чендрал

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. Цей код працює лише в контексті, де це вікно ===, однак це не завжди може бути, особливо якщо хтось вставив це рішення.
мертвий

Не "деякі" сервери залежать від регістру. Це MOST-сервери. Тож я згоден з 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: ƒ, …}

документ.розташування

  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

Як було сказано, ви не можете дозволити () 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.