Объект Location относится к объектной модели браузера (BOM, или Browser Object Model) и отвечает за сведения о текущем адресе страницы, а также позволяет перенаправить пользователя на нужную страницу или перезагрузить текущую. Это очень полезный объект, который может заменить вам такой html-элемент, как ссылка, по своему функционалу.

Поскольку объект Location подчиняется непосредственно глобальному объекту Window, то доступ к нему можно получить таким образом:

У объекта Location есть ряд свойств и методов, которые мы рассмотрим в этой статье, а также постараемся ими воспользоваться.

Свойства объекта Location

  • location.hash - устанавливает или возвращает якорную часть (#) текущего адреса (URL);
  • location.href возвращает адрес (URL) текущей страницы или устанавливает адрес (URL) нужной страницы;
  • location.hostname возвращает доменное имя веб-хоста;
  • location.pathname возвращает путь и имя файла текущей страницы;
  • location.protocol возвращает использованный веб-протокол (http: или https:);
  • location.port возвращает номер порта текущей страницы (по умолчанию порт 80 для протокола http и 443 для https);
  • location.origin - возвращает протокол, имя хоста и номер порта URL;
  • location.search возвращает часть URL после знака "?" вместе с этим знаком, которая отвечает за передаваемые параметры. Например, в адресе http://mysite.com/?post=34&user_id=3467 свойство location.search вернет ?post=34&user_id=3467. Пример использования этого свойства вы найдете в статье про обработку события onmousemove.

Методы объекта Location

  • location.assign('url нового документа') загружает новый документ по указанному в скобках адресу.  В отличие от location.replace(), метод добавит новую запись в стек истории.;
  • location.replace('url нового документа') - заменяет текущий документ на тот, URL которого указан в качестве параметра в скобках. Не сохраняется в истории браузера (заменяет запись в стеке истории), т.е. при нажатии кнопки "Назад" в браузере вы не вернетесь на предыдущую страницу;
  • location.reload() - перезагружает текущий документ. В качестве необязательного параметра можно указать значение true, и тогда произойдет принудительное обновление страницы с сервера. Если параметр не указан или имеет значение false, то обновление страницы происходит из кэша браузера. Метод reload() - это программный вариант нажатия кнопки обновить в вашем браузере.

Использование свойств и методов объекта Location

Давайте посмотрим, каким образом мы можем использовать свойство location.href  для того, чтобы перейти к определенному поисковику. Поисковик будем выбирать из выпадающего списка. Выбор пользователя обработаем с помощью события onchange.

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

Код примера:

Несколько видоизменим наш предыдущий пример, заменив ссылки и пункты в выпадающем списке на категории сайта. Для обработки используем все то же событие onchange, но внутри него запишем метод location.assign().

Код будет таким:

Обратите внимание на значение в атрибуте value тегов <option>: поскольку мы даем ссылки на текущий сайт, то и сама ссылка может быть относительной, а не абсолютной. Также в двух примерах мы использовали разные подходы к написанию обработчика события.

location.search и URLSearchParams

В том случае, если в поиске участвует много параметров, вам может понадобится, например, их отличать. Для этого может быть использован API URLSearchParams, который позволяет получить или отформатировать поисковые параметры из URL. Это удобный инструмент для работы с URL-адресами, который может быть использован для получения, добавления, удаления и изменения параметров поиска в URL.

Создание параметров запроса в виде экземпляра класса URLSearchParams

Вы можете создать параметры поиска, просто создав экземпляр класса URLSearchParams с помощью ключевого слова new и  параметра в виде строки запроса.

Добавление параметров

Добавление параметров поиска в URL осуществляется с помощью метода append(name, value). Он добавляет параметр с указанным именем и значением в конец строки запроса.

Запись параметров

Запись параметров поиска в URL осуществляется с помощью метода set(name, value). Нужно указать сам параметр и его новое значение.

Получение значения параметра

Другой метод get(name) позволяет получить значение параметра поиска из URL по указанному имени этого параметра.

Проверка наличия параметра

Как и в коллекции Map, в экземпляра класса URLSearchParams можно проверить, есть ли определенный параметр поиска в URL с помощью метода has(name). Он возвращает true, если параметр с указанным именем присутствует в URL, и false в противном случае.

Получение имён/значений  всех параметров

В том случае, если вам нужен список имен (названий) всех параметров поиска в URL, используйте метод keys(). Он возвращает итератор, который перебирает имена всех параметров.

Если же нужны значения, то цикл мы запускаем с использованием метода values():

И оба варианта в виде параметра и его значения в формате [name, value] можно получить с помощью метода entries():

Сортировка и удаление параметров

Поскольку по сути параметры собираются в псевдомассив, то вы можете его отсортировать методом searchParams.sort(). В этом случае параметры будут упорядочены по их именам в алфавитном порядке.

Он удаляет параметр с указанным именем из строки запроса можно методом delete, указав нужный параметр: searchParams.delete('param1');

Приведение параметров к строке

Приведение параметров поиска в URL к строке осуществляется с помощью метода toString(). Он возвращает строку, содержащую параметры поиска в URL.

 

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *