14.2.1. Анализ URL

We use cookies. Read the Privacy and Cookie Policy

Свойство location окна является ссылкой на объект Location и представляет URL-адрес документа, отображаемого в данный момент в текущем окне. Свойство href объекта Location - это строка, содержащая полный текст URL-адреса. Метод toString() объекта Location возвращает значение свойства href, поэтому в контекстах, где неявно подразумевается вызов метода toString(), вместо конструкции location.href можно писать просто location.

Другие свойства этого объекта, такие как protocol, host, hostname, port, pathname, search и hash, определяют отдельные части URL-адреса. Они известны как свойства «декомпозиции URL» и также поддерживаются объектами Link (которые создаются элементами <а> и <агеа> в HTML-документах). Полное описание объектов Location и Link приводится в четвертой части книги.

Свойства hash и search объекта Location представляют особый интерес. Свойство hash возвращает «идентификатор фрагмента» из адреса URL, если он имеется: символ решетки (#) со следующим за ним идентификатором. Свойство search содержит часть URL-адреса, следующую за вопросительным знаком, если таковая имеется, включая сам знак вопроса. Обычно эта часть URL-адреса является строкой запроса. В целом эта часть URL-адреса используется для передачи параметров и является средством встраивания аргументов в URL-адрес. Хотя эти аргументы обычно предназначены для сценариев, выполняющихся на сервере, нет никаких причин, по которым они не могли бы также использоваться в страницах, содержащих JavaScript-код. В примере 14.2 приводится определение универсальной функции urlArgs(), позволяющей извлекать аргументы из свойства search URL-адреса. В примере используется глобальная функция decodeURIComponent(), имеющаяся в клиентском JavaScript. (Смотрите справочную статью «Global» в третьей части книги.)

Пример 14.2. Извлечение аргументов из строки search URL-adpeca

/*

* Эта функция выделяет в URL-адресе разделенные амперсандами

* пары аргументов имя/значение из строки запроса. Сохраняет эти пары

* в свойствах объекта и возвращает этот объект. Порядок использования:

*

* var args = urlArgsO; // Извлечь аргументы из URL

* var q = args.q || "" // Использовать аргумент, если определен,

                       // или значение по умолчанию

* var n = args.n ? parselnt(args.n) : 10;

*/

function urlArgs() {

  var args = {};                            // Создать пустой объект

  var query = location.search.substring(1); // Строка запроса без '?'

  var pairs = query.split("&");             // Разбить по амперсандам

  for(var і = 0; і < pairs.length; i++) {   // Для каждого фрагмента

    var pos = pairs[i].index0f('=');        // Отыскать пару имя/значение

    if (pos == -1) continue;                // He найдено - пропустить

    var name = pairs[i].substrings,pos);    // Извлечь имя

    var value = pairs[i].substring(pos+1);  // Извлечь значение

    value = decodeURIComponent(value);      // Преобразовать значение

    args[name] = value;                     // Сохранить в виде свойства

  }

  return args; // Вернуть полученные аргументы

}