JavaScript. Подробное руководство, 6-е издание
Шрифт:
Если методу
setTimeout
указать величину интервала 0 миллисекунд, указанная функция будет вызвана не сразу, а «как только такая возможность появится, т. е. как только завершат работу все обработчики событий. 14.2. Адрес документа и навигация по нему
Свойство
location
объекта Window
ссылается на объект Location
, представляющий текущий URL-адрес документа, отображаемого в окне и определяющий методы, инициирующие загрузку нового документа в окно. Свойство
location
объекта Document
также ссылается на объект Location
:
window.location === document.location // всегда верно
Кроме того, объект
Document
имеет свойство URL
, хранящее статическую строку с адресом URL документа. При перемещении по документу с использованием идентификаторов фрагментов (таких как «#table-of-contents») внутри документа объект Location
будет обновляться, отражая факт перемещения, но свойство document. 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; // Вернуть полученные аргументы
}
14.2.2. Загрузка нового документа
Метод
assign
объекта Location
заставляет окно загрузить и отобразить документ по указанному URL-адресу. Метод replace
выполняет похожую операцию, но перед открытием нового документа он удаляет текущий документ из списка посещавшихся страниц. Когда сценарию просто требуется загрузить новый документ, часто предпочтительнее использовать метод replace,
а не assign.
В противном случае кнопка Back (Назад) броузера вернет оригинальный документ и тот же самый сценарий снова загрузит новый документ. Метод location.replace
можно было бы использовать для загрузки версии веб-страницы со статической разметкой HTML, если сценарий обнаружит, что броузер пользователя не обладает функциональными возможностями, необходимыми для отображения полноценной версии:
Поделиться:
Популярные книги
Черный маг императора 3
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Жена по ошибке
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Курсант: назад в СССР
1. Курсант
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Древесный маг Орловского княжества
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Властелин Севера
3. Саксонские хроники
Приключения:
исторические приключения
8.67
рейтинг книги
Московское золото или нежная попа комсомолки. Часть Вторая
2. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
И в аду есть герои
5. Тайный Город
Фантастика:
боевая фантастика
9.19
рейтинг книги
Вернувшийся: Первые шаги. Том II
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Воплощение Похоти
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 24
24. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Хозяин Теней
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00