Чтение онлайн

на главную - закладки

Жанры

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

// Если броузер не поддерживает объект XMLHttpRequest, выполнить

// переход к статической странице, которая не использует его.

if (!XMLHttpRequest) location.replace("staticpage.html");

Примечательно, что строка URL-адреса в этом примере, переданная методу

replace,
представляет относительный адрес. Относительные URL-адреса интерпретируются относительно страницы, в которой они появляются, точно так же, как если бы они использовались в гиперссылке.

Кроме методов

assign
и
гер1асе
объект Location определяет также метод
reload,
который заставляет броузер перезагрузить документ.

Однако более традиционный способ заставить броузер перейти к новой странице заключается в том, чтобы просто присвоить новый URL-адрес свойству

location
:

location = '' http://www.oreilly.com "; // Перейти, чтобы купить несколько книг!

Свойству

location
можно также присваивать относительные URL-адреса. Они разрешаются относительно текущего URL:

location = "page2.html"; // Загрузить следующую страницу

Идентификатор фрагмента - это особый вид относительного URL-адреса, который заставляет броузер просто прокрутить страницу, чтобы отобразить новый раздел, а не загружать новый документ. Идентификатор

#top
имеет специальное назначение: если в документе отсутствует элемент с идентификатором «top», он вынудит броузер перейти в начало документа:

location = "#top"; // Перейти в начало документа

Свойства декомпозиции URL объекта

Location
доступны для записи, и их изменение влечет за собой изменение URL-адреса в свойстве
location
и вынуждает броузер загрузить новый документ (или, в случае изменения свойства
hash
, выполнить переход внутри текущего документа):

location.search = "?page=" + (pagenum+1); // загрузить следующую страницу

14.3. История посещений

Свойство

history
объекта
Window
ссылается на объект
History
данного окна. Объект
History
хранит историю просмотра страниц в окне в виде списка документов и сведений о них. Свойство
length
объекта
History
позволяет узнать количество элементов в списке, но по причинам, связанным с безопасностью, сценарии не имеют возможности получить хранящиеся в нем URL-адреса. (Иначе любой сценарий смог бы исследовать историю посещения веб-сайтов.)

Методы

back
и
forward
действуют подобно кнопкам
Back
(Назад) и
Forward
(Вперед) броузера: они заставляют броузер перемещаться на один шаг назад и вперед по истории просмотра данного окна. Третий метод,
gо,
принимает целочисленный аргумент и пропускает заданное число страниц, двигаясь вперед (если аргумент положительный) или назад (если аргумент отрицательный) в списке истории.

history.go(-2); // Переход назад на 2 элемента, как если бы пользователь

// дважды щелкнул на кнопке Back (Назад)

Если окно содержит дочерние окна (такие как элементы

<iframe>
– подробности смотрите в разделе 14.8.2), истории посещений в дочерних окнах хронологически чередуются с историей посещений в главном окне. То есть вызов
history.back
(например) в главном окне может вызвать переход назад, к ранее отображавшемуся документу, в одном из дочерних окон, оставив главное окно в текущем состоянии.

Современные веб-приложения способны динамически изменять содержимое страницы без загрузки нового документа (примеры приводятся в главах 15 и 18). Приложениям, действующим подобным образом, может потребоваться предоставить пользователям возможность использовать кнопки

Back
и
Forward
для перехода между этими динамически созданными состояниями приложения. Стандарт HTML5 определяет два способа реализации, и оба они описываются в разделе 22.2.

Управление историей посещений до появления стандарта HTML5 представляло собой довольно сложную задачу. Приложение, управляющее собственной историей, должно было создавать новые записи в списке истории окна, связывать эти записи с информацией о состоянии, определять момент щелчка на кнопке

Back
, чтобы перейти к другой записи в списке, получать информацию, связанную с этой записью и воссоздавать предыдущее состояние приложения в соответствии с этой информацией. Один из приемов реализации такого поведения опирается на использование скрытого элемента
<iframe>
, в котором сохраняется информация о состоянии и создаются записи в списке истории просмотра. Чтобы создать новую запись, в этот скрытый фрейм динамически записывается новый документ, с помощью методов
open
и
write
объекта
Document
(раздел 15.10.2). Документ должен включать всю информацию, необходимую для воссоздания соответствующего состояния приложения. Когда пользователь щелкнет на кнопке
Back
, содержимое скрытого фрейма изменится. До появления стандарта HTML5 не предусматривалось никаких событий, которые извещали бы об этом изменении, поэтому, чтобы определить момент щелчка на кнопке
Back
, приходилось использовать функцию
setlnterval
(раздел 14.1) и с ее помощью 2-3 раза в секунду проверять наличие изменений в скрытом фрейме.

Однако на практике разработчики, когда требуется реализовать подобное управление историей просмотра, предпочитают использовать готовые решения. Многие фреймворки JavaScript включают такие решения. Например, для библиотеки jQuery существует расширение history. Существуют также автономные библиотеки управления историей. Например, одной из наиболее популярных является библиотека RSH (Really Simple History - действительно простое управление историей). Найти ее можно по адресуВ разделе 22.2 описывается, как реализуется управление историей в HTML5.

Поделиться:
Популярные книги

Неучтенный элемент. Том 10

NikL
10. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 10

На границе империй. Том 10. Часть 2

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 10. Часть 2

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Сердце Дракона. Том 10

Клеванский Кирилл Сергеевич
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Сердце Дракона. Том 10

Настольная книга по теологии. Библейский комментарий АСД Том 12

Церковь христиан адвентистов седьмого дня
Научно-образовательная:
религиоведение
5.00
рейтинг книги
Настольная книга по теологии. Библейский комментарий АСД Том 12

Охотник на демонов

Шелег Дмитрий Витальевич
2. Живой лёд
Фантастика:
боевая фантастика
5.83
рейтинг книги
Охотник на демонов

Пышка (сборник)

Де Мопассан Ги
Проза:
классическая проза
8.45
рейтинг книги
Пышка (сборник)

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.25
рейтинг книги
Гримуар темного лорда VI

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Воронцов. Перезагрузка. Книга 5

Тарасов Ник
5. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 5

Газлайтер. Том 40

Володин Григорий Григорьевич
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 40

Некромант на страже человечества. Том 5

Клеванский Никита
5. Некромант на страже человечества
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Некромант на страже человечества. Том 5

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Я уже князь. Книга XIX

Дрейк Сириус
19. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я уже князь. Книга XIX