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; // Вернуть полученные аргументы
}
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ