Книга: JavaScript. Подробное руководство, 6-е издание

14.2.1. Анализ URL

14.2.1. Анализ URL

Свойство 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; // Вернуть полученные аргументы
}

Оглавление книги


Генерация: 1.363. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз