Как получить url текущей страницы на JavaScript

Как получить url текущей страницы на JavaScript
Комментарии: 14

Рассмотрим как получить URL текущей страницы в JS целиком, а также по отдельности — протокол, доменное имя сайта, GET параметры и значение после решётки (хеша). Полная информация об адресе содержится в объекте «document.location». Доступ к отдельным элементам получаем через его свойства.

Разберём адрес: https://realadmin.ru/saytostroy/?page=4#top
СвойствоЗначение
document.location.hrefhttps://realadmin.ru/saytostroy/?page=4#top
document.location.protocolhttps:
document.location.hostrealadmin.ru
document.location.pathname/saytostroy/
document.location.search?page=4
document.location.hash#top

Получение значений GET параметров

Javascript предоставляет специальный объект для работы с GET параметрами. С его помощью можно проверить существование параметра по названию и получить значение.

Для примера возьмем адрес:

https://realadmin.ru/saytostroy/?page=4&limit=10&sortby=desc

Извлечём значения «page» и «sortby»:

var paramsString = document.location.search; // ?page=4&limit=10&sortby=desc  
var searchParams = new URLSearchParams(paramsString);
    
searchParams.get("page"); // 4
searchParams.get("sortby"); // desc

URLSearchParams — объект не доступен в устаревших версиях браузеров, например во всех версиях IE.

Для проверки существования параметров, воспользуйтесь методом «has».

searchParams.has("limit"); // true
searchParams.has("sortby"); // true
searchParams.has("orderby"); // false

Для перебора всех пар ключ/значение используем метод «entries».

for(var pair of searchParams.entries()) {
   console.log(pair[0]+ ', '+ pair[1]); 
}

Результат:

  • page 4
  • limit 10
  • sortby desc

Разбор URL из строки

Кроме всех вышеприведённых примеров, можно воспользоваться объектом URL.

var addr = new URL('https://realadmin.ru/saytostroy/?page=4&limit=10&sortby=desc#top');
СвойствоЗначение
addr.hrefhttps://realadmin.ru/saytostroy/?page=4#top
addr.protocolhttps:
addr.hostrealadmin.ru
addr.pathname/saytostroy/
addr.search?page=4&limit=10&sortby=desc
addr.hash#top

Интересно, что этот объект содержит свойство «searchParams» типа «URLSearchParams», который можно использовать для извлечения GET параметров.

var addr = new URL('https://realadmin.ru/saytostroy/?page=4&limit=10&sortby=desc#top');

if (addr.searchParams.has('limit')) {
    let limit = addr.searchParams.get('limit'); // 10
}
Темы:
JavaScript
Ещё интересное — 6
Комментарии —
  1. Вася
    Вася06 октября 2018, 06:18#
    Респект и уважуха бро
    1. Владос
      Владос21 июня 2020, 11:02#
      Сап, спасибо за гайд, кратко и понятно
      1. tm.lxrd
        tm.lxrd01 августа 2020, 14:29#
        Без воды, спасибо)
        1. Andy Si08 сентября 2020, 12:56#
          Обновил статью, добавил новый способ работы с параметрами через объект URLSearchParams. Пользуйтесь :)
          1. Иван из России
            Иван из России17 августа 2021, 14:23(был изменён)#
            Отключил брокировщик рекламы, покормил кота и хозяина сайта. Быть добру)
            1. Andy Si17 августа 2021, 14:30#
              Красавчик, респект тебе)))
            2. Andew
              Andew19 сентября 2021, 20:13#
              Статья — бомба! Только не извлекём а извлечём.)
              Автору спасибо!
              1. Andy Si20 сентября 2021, 09:18#
                Спасибо, поправил ;)
              2. Kelvin
                Kelvin24 апреля 2022, 22:56#
                а где данные https://realadmin.ru/saytostroy/?page=4#top
                которые нах. между / и ?page…?
                как определить адрес конкретного файла\страницы?
                1. Andy Si24 апреля 2022, 23:03#
                  Не понял чего не хватает. Путь есть в pathname. Или что-то другое требуется?
                  1. Kelvin
                    Kelvin26 апреля 2022, 20:51#
                    например: https://youtube.com/
                    какая страница открывается по умолчанию?
                    как ее вычислить?
                    1. Andy Si26 апреля 2022, 20:57#
                      Так есть в статье и выше написал — document.location.pathname
                2. Insider
                  Insider09 декабря 2022, 18:25(был изменён)#
                  Может кому пригодится
                  append(name, value) – добавить параметр по имени,
                  delete(name) – удалить параметр по имени,
                  get(name) – получить параметр по имени,
                  getAll(name) – получить все параметры с одинаковым именем name (такое возможно, например: ?user=John&user=Pete),
                  has(name) – проверить наличие параметра по имени,
                  set(name, value) – задать/заменить параметр,
                  sort() – отсортировать параметры по имени, используется редко
                  1. Andy Si12 декабря 2022, 09:32#
                    Вполне возможно
                  © REALADMIN.RU   2024 г.
                  Страница сгенерирована: 0,1960 s | 4 mb.
                  На каком уровне Вы играете в шахматы?
                  OPROS