Третья кнопка используется для вывода
диалогового окна запроса данных. Заметьте, что
метод prompt имеет и второй
параметр, определяющий значение по умолчанию,
которое указывается в поле. Если в этом
диалоговом окне щелкнуть на кнопке Cancel, то будет
возвращено значение null. Управление фреймами
Использование объектов
фреймов
При разделении окна на отдельные фреймы
управление ими осуществляется с помощью объекта frame. Объект frame
используется для управления только текущим
фреймом. Этот объект синтаксически равноправен
отрибуту name в дескрипторе
<FRAME>
Вы еще помните, что оба ключевых слова window и self
соответствуют текущему окну? При использовании
фреймов эти ключевые слова относятся к текущему
фрейму. Еще одно ключевое слово parent
позволяет обращаться к главному окну браузера.
Каждый объект frame
выступает в качестве дочернего по отношению к
родительскому объекту window. В
листинге 23.2 приведен код HTML определения набора
фреймов.
Листинг 23.2. Документ HTML с
фреймами
<FRAMESET ROWS="*,*" COLS="*,*">
<FRAME NAME="topleft" SRC="topleft.htm">
<FRAME NAME="topright" SRC="topright.htm">
<FRAME NAME="bottomleft" SRC="bottomleft.htm">
<FRAME NAME="bottomright" SRC="bottomright.htm">
</FRAMESET>
Этот код разделяет документ HTML на равные
четверти. Если вы имеете готовый файл topleft.htm,
то он будет соответствовать объекту parent.topleft.
В этом случае ключевые слова window
и self также будут
соответствовать фрейму topleft.
Если вы используете закрепленные фреймы, то
ситуация немного усложняется: объект window
по-прежнему соответствует текущему фрейму, parent - определяет набор фреймов,
в котором расположен текущий фрейм, а top
- соответствует основному набору фреймов,
содержащему остальные наборы.
Массив frames
Вместо того чтобы в программе обращаться к
фрейму по имени, можно использовать массив frames. Он сохраняет сведения обо
всех фреймах документа. В этом случае фреймы
индексируются (начальное значение 0) и
определяются в дескрипторе <FRAME>.
Например, вы можете обращаться к фреймам в
листинге 23.2 с помощью следующего кода:
parent.frames[0] соответствует
фрейму topleft
parent.frames[1] соответствует
фрейму topright
parent.frames[2] соответствует
фрейму bottomleft
parent.frames[3] соответствует
фрейму bottomright
Для обращения к фрейму документа можно
использовать и иерархическую структуру
объектов. Выбирайте тот способ, который проще и
удобнее для использования. Например, в документе,
состоящем из 10 фреймов, к фреймам проще
обращаться как к элементам массива. А
двухфреймовым документом проще управлять с
помощью имен объектов.
Создание навигационного
фрейма
С помощью объектов frame
можно создать навигационный фрейм, определяющий
отображаемые на экране данные, введенные во
втором фрейме.
Сначала необходимо определить набор фреймов.
Это проще простого. Листинг 23.3 показывает, как
определить фреймы, разделяющие страницу на левую
и правую области.
Листинг 23.3. Документ HTML с
фреймами
<HTML>
<HEAD>
<TITLE>Навигационный фрейм</TITLE>
</HEAD>
<FRAMESET COLS="*,*">
<FRAME NAME="left" SRC="left.htm">
<FRAME NAME="right" SRC="about:blank">
</FRAMESET>
</HTML>
Затем нам необходимо определить документ для
левого фрейма, используемого для перемещения по
документу другого фрейма. Он представлен в
листинге 23.4
Листинг 23.4. Документ HTML
навигационного фрейма
<HTML>
<HEAD>
<TITLE>Навигационный фрейм</TITLE>
</HEAD>
<BODY>
<P>
Одна из следующих ссылок загружает новую
страницу в правой области
</P>
<UL>
<LI><A HREF="#"
onClick="parent.right.location='order.htm';
window.location='ordernav.htm';">
Order Form</A>
<LI><A HREF="#"
onClick="parent.right.location='email.htm';
window.location='emailnav.htm';">
Email</A>
<LI><A HREF="#"
onClick="parent.right.location='sales.htm';
window.location='salesnav.htm';">
Sales</A>
<LI><A HREF="#"
onClick="parent.right.location='links.htm';
window.location='linksnav.htm';">
Other Links</A>
</UL>
</BODY>
<HTML>
Этот программный код выглядит сложным из-за
присутствия в нем двух операторов JavaScript,
определяющих ссылки на странице. Эти операторы
немного отличаются для разных ссылок. Вот пример
первого по следованию оператора, задающего в
программе HTML ссылку на ресурс:
onClick="parent.right.location='order.htm';
window.location='ordernav.htm';">
Этот оператор представляет собой обработчик
событий, загружающий необходимую вэб-страницу в
правом фрейме, а также новый документ в
навигационном фрейме. Поскольку сценарий
выполняется только в пределах фрейма, необходимо
перед именами объектов другого фрейма
использовать слово parent.
Если вы хотите только загрузить указанный
документ после щелчка на ссылке, используйте
атрибут TARGET дескриптора
<А>. Он позволяет избежать использование
сценария JavaScript. Если вы добиваетесь
одновременного обновления обоих кадров,
используйте приведенный выше код.
Чтобы протестировать сценарий, загрузите его в
браузере. Убедитесь, что после щелчка на ссылке в
правой области загружается необходимый документ
HTML (их сделаете сами). Сначала загрузите код
листинга 23.3.