Файл: www/ycheb/js_teach/windows.php
Строк: 304
<?php
include '../../config.php';
$title='Учебник JavaScript';
aut();
head();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<phpl<TITLE>Использование Окон и Фрэймов</TITLE>
<BODY>
<h5><a href="contents.php">Оглавление</a> | <a href="navobj.php">Назад</a>
| <a href="advtopic.php">Вперёд</a> | <a href="bklast.php">Индекс</a></h5>
<HR><h1>Глава 12<BR><a name="996824"></a>Использование Окон и Фрэймов</h1><p><A NAME="1011668"></a>
JavaScript позволяет создавать окна и фрэймы для представления HTML-содержимого.
Объект window является объектом верхнего уровня в иерархии клиентского JavaScript;
объект Frame похож на объект window, но соответствует "подокну" и создаётся тэгом FRAME в документе с тэгом FRAMESET.</p>
<p><A NAME="1011686"></a>В главе имеются следующие разделы:</p><ul><LI><A NAME="1011687"></a>
<A HREF="#1012749">Открытие и закрытие окон</a><A HREF="#1012749"></a></LI><LI><A NAME="1011688"></a>
<A HREF="#1004240">Использование фрэймов</a></LI><LI><A NAME="1011941"></a>
<A HREF="#1004300">Обращение к окнам и фрэймам</a></LI><LI><A NAME="1011950"></a>
<A HREF="#1004326">Навигация по окнам и фрэймам</a></LI></ul><BLOCKQUOTE>
<p><B>ПРИМЕЧАНИЕ: </B><A NAME="1011468"></a>Эта книга не содержит информации о слоях/layers, которые были введены в JavaScript 1.2.<br>
О слоях см. <EM> <A HREF="http://developer.netscape.com/docs/manuals/communicator/dynphpl/index.php" TARGET="_top">Dynamic HTML in Netscape
Communicator</a></EM>.</p></BLOCKQUOTE><H2><A NAME="Opening and Closing Windows"><A NAME="1012749"></a>
Открытие и закрытие окон</H2><hr><p><A NAME="1012750"></a>
Окно создаётся автоматически при запуске Navigator'а; Вы
можете открыть другое окно, выбрав New и Navigator Window в меню File. Вы можете
закрыть окно, выбрав Close или Exit в меню File. Вы можете также открывать и закрывать окна программно с помощью JavaScript.</p>
<H3><A NAME="Head2;"></a><A NAME="1004224"></a>Открытие окна</H3><hr><p><A NAME="1004225"></a>
Можно создать окно методом <CODE>open</CODE>. Следующий оператор создаёт окно <CODE>msgWindow</CODE>,
которое отображает содержимое файла <CODE>sesame.phpl</CODE>:</p>
<PRE><A NAME="1004226"></a>msgWindow=window.open("sesame.phpl")</PRE><p><A NAME="1004227"></a>
Следующий оператор создаёт окно <CODE>homeWindow</CODE>, которое отображает
домашнюю страницу Netscape:</p><PRE><A NAME="1004228"></a>homeWindow=window.open("http://home.netscape.com")</PRE>
<p><A NAME="1006632"></a>Окно может иметь два имени. Следующий оператор создаёт окно с двумя именами.
Первое имя, <CODE>msgWindow</CODE>, это переменная, которая ссылается на объект <CODE>window</CODE>.
Этот объект содержит информацию о свойствах, методах и контейнерах окна. При
создании окна Вы можете также предоставить второе имя, в данном случае - <CODE>displayWindow</CODE>,
для обращения к окну как к цели/target при отправке формы или при переходе по гиперссылке.</p>
<PRE><A NAME="1004230"></a>msgWindow=window.open("sesame.phpl","displayWindow")</PRE>
<p><A NAME="1004231"></a>Имя окна не требуется при создании окна. Но окно обязано иметь имя, если Вы
хотите обратиться к нему из другого окна. </p><p><A NAME="1005000"></a>
При открытии окна Вы можете специфицировать атрибуты, такие как высота/height и
ширина/width, панель утилит/toolbar, адресная строка/location field или полосы
прокрутки/scrollbars. Следующий оператор создаёт окно без панели утилит, но с полосами прокрутки:</p>
<PRE><A NAME="1004232"></a>msgWindow=window.open<br> ("sesame.phpl","displayWindow","toolbar=no,scrollbars=yes")</PRE>
<p><A NAME="1009329"></a>Об именах окно см. дополнительно <A HREF="#1004300">"Обращение к окнам
и фрэймам"</a>. Об атрибутах окна см. метод <CODE>open</CODE> объекта <CODE>window</CODE>
в книге <I><a TARGET="_top" href="../clientref13/index.php">Клиентский JavaScript.
</a></I><a href="../clientref13/index.php"><i>Справочник</i></a>.</p><H3><A NAME="Head2;"></a>
<A NAME="1004234"></a>Закрытие окна</H3><hr><p><A NAME="1005823"></a>Вы можете закрыть окно методом <CODE>close</CODE>. Вы не можете закрыть фрэйм,
не закрыв родительское окно.</p><p><A NAME="1005824"></a>Каждый из следующих операторов закрывает текущее окно:</p>
<PRE><A NAME="1005825"></a>window.close()<br>self.close()<br>close()</PRE><p><A NAME="1009436"></a>
Не используйте третью форму, <CODE>close()</CODE>, в обработчиках событий. В
зависимости от того, как JavaScript вычисляет объект, на который ссылается вызов
метода, Вы можете получить в обработчике не тот объект.</p><p><A NAME="1009437"></a>
Следующий оператор закрывает окно <CODE>msgWindow</CODE>:</p><PRE><A NAME="1009438"></a>msgWindow.close()</PRE>
<H2><A NAME="Using Frames"><A NAME="1004240"></a>Использование фрэймов</H2><hr><p><A NAME="1007978"></a>
<b>Набор фрэймов/frameset</b> это специальный тип окна, в котором выводятся
несколько независимо прокручиваемых <B>фрэймов/кадров/frames</B> в одном экране, каждый
со своим собственным URL. Фрэймы набора фрэймов могут указывать на различные URL
и могут быть целями для других URL, все в одном окне. Серия фрэймов в <I>наборе фрэймовframeset </I>образует HTML-страницу.</p>
<p><A NAME="1007980"></a>На рисунке показано окно с тремя фрэймами. Левый фрэйм называется <CODE>listFrame</CODE>;
правый - <CODE>contentFrame</CODE>; нижний - <CODE>navigateFrame</CODE>.</p><h6><A NAME="1009685"></a>
Рисунок 12.1 Страница с фрэймами</h6><P>
<IMG SRC="graphics/frame.gif" width="600" height="352"></a></P>
<H3><A NAME="Head2;"></a><A NAME="1004244"></a>Создание фрэйма</H3><hr><p><A NAME="1004245"></a>
Вы создаёте фрэйм тэгом <CODE>FRAMESET</CODE> в HTML-документе; единственное
предназначение этого тэга - определить фрэймы на странице.</p><p><A NAME="1004246"></a>
<B>Пример 1.</B> Следующий оператор создаёт frameset, показанный ранее на рисунке:</p>
<PRE><A NAME="1004247"></a><FRAMESET ROWS="90%,10%"><br> <FRAMESET COLS="30%,70%"><br> <FRAME SRC=category.phpl NAME="listFrame"><br> <FRAME SRC=titles.phpl NAME="contentFrame"><br> </FRAMESET><br> <FRAME SRC=navigate.phpl NAME="navigateFrame"><br></FRAMESET></PRE>
<p><A NAME="1004248"></a>На следующем рисунке показана иерархия фрэймов. Все три фрэйма имеют общего
родителя, хотя два фрэйма определены в отдельном frameset. Это из-за того, что
родителем фрэйма является родительское окно, и фрэйм, а не frameset, определяет окно.</p>
<h6><A NAME="1009849"></a>Рисунок 12.2 Пример иерархии фрэймов</h6>
<P><IMG SRC="graphics/hier_01.gif" width="196" height="119"></a></P><p><A NAME="1004250"></a>
Вы можете обратится к фрэймам, используя массив <CODE>frames</CODE> так, как
показано ниже. (О массиве <CODE>frames</CODE> см. объект <CODE>window</CODE> в
книге <I><a TARGET="_top" href="../clientref13/index.php">Клиентский JavaScript.
</a></I><a href="../clientref13/index.php"><i>Справочник</i></a>.)</p><ul><LI><A NAME="1004251"></a>
<CODE>listFrame</CODE> is <CODE>top.frames[0]</CODE></LI><LI><A NAME="1004252"></a>
<CODE>contentFrame</CODE> is <CODE>top.frames[1]</CODE></LI><LI><A NAME="1004253"></a>
<CODE>navigateFrame</CODE> is <CODE>top.frames[2]</CODE></LI></ul><p><A NAME="1004254"></a>
<B>Пример 2.</B> Альтернативно Вы можете создать окно типа вышеприведённого, в
котором два верхних фрэйма имеют родителя отдельно от <CODE>navigateFrame</CODE>.
Набор фрэймов/frameset верхнего уровня может быть определён так:</p>
<PRE><A NAME="1004255"></a><FRAMESET ROWS="90%,10%"><br> <FRAME SRC=muskel3.phpl NAME="upperFrame"><br> <FRAME SRC=navigate.phpl NAME="navigateFrame"><br></FRAMESET></PRE>
<p><A NAME="1004256"></a>Файл <CODE>muskel3.phpl</CODE> содержит каркас верхних фрэймов и определяет
следующий frameset:</p><PRE><A NAME="1004257"></a><FRAMESET COLS="30%,70%"><br> <FRAME SRC=category.phpl NAME="listFrame"><br> <FRAME SRC=titles.phpl NAME="contentFrame"><br></FRAMESET></PRE>
<p><A NAME="1004258"></a>На следующем рисунке показана иерархия фрэймов.<br><CODE>upperFrame</CODE> и <CODE>navigateFrame</CODE> имеют общего родителя -
окно <CODE>top</CODE>.<br><CODE>listFrame</CODE> и <CODE>contentFrame</CODE> - имеют общего родителя<CODE> upperFrame</CODE>.</p>
<h6><A NAME="1009900"></a>Рисунок 12.3 Ещё один пример иерархии фрэймов</h6>
<P><IMG SRC="graphics/hier_02.gif" width="305" height="128"></a></P><p><A NAME="1005340"></a>
Вы можете обратится к предыдущим фрэймам, используя массив <CODE>frames</CODE>
так, как показано ниже. (О массиве <CODE>frames</CODE> см. объект <CODE>window</CODE>
в книге <I><a TARGET="_top" href="../clientref13/index.php">Клиентский JavaScript.
</a></I><a href="../clientref13/index.php"><i>Справочник</i></a>.)</p>
<ul><LI><A NAME="1004261"></a><CODE>upperFrame</CODE> это <CODE>top.frames[0]</CODE></LI><LI><A NAME="1004262"></a>
<CODE>navigateFrame</CODE> это <CODE>top.frames[1]</CODE></LI><LI><A NAME="1004263"></a>
<CODE>listFrame</CODE> это <CODE>upperFrame.frames[0]</CODE> или <CODE>top.frames[0].frames[0]</CODE></LI><LI><A NAME="1004264"></a>
<CODE>contentFrame</CODE> это <CODE>upperFrame.frames[1]</CODE> или <CODE>top.frames[0].frames[1]</CODE></LI></ul>
<p><A NAME="1006778"></a>Пример создания фрэймов см. в разделе <A HREF="#1004274">"Создание и Обновление
Фрэймов: Пример"</a>.</p><H3><A NAME="Head2;"></a><A NAME="1004265"></a>Обновление фрэйма</H3><hr><p><A NAME="1004266"></a>
Вы может обносить содержимое фрэйма с помощью свойства <CODE>location</CODE>, установив URL.</p><p><A NAME="1004267"></a>
Например, Вы используете frameset, описанный в Примере 2 в предыдущем разделе.
Если Вы хотите, чтобы пользователи могли закрывать фрэйм, содержащий алфавитный
список артистов или список по категориям (во фрэйме <CODE>listFrame</CODE>) и
вид только названий произведений, отсортированных по музыкантам (в данный момент
- во фрэйме <CODE>contentFrame</CODE>), Вы можете добавить следующую функцию в <CODE>navigateFrame</CODE>:</p>
<PRE><A NAME="1004270"></a><INPUT TYPE="button" VALUE="Titles Only"<br> onClick="top.frames[0].location='artists.phpl'"></PRE>
<p><A NAME="1004271"></a>Когда пользователь щёлкает по этой кнопке, файл <CODE>artists.phpl</CODE>
загружается во фрэйм <CODE>upperFrame</CODE>; фрэймы <CODE>listFrame</CODE> и <CODE>contentFrame</CODE>
закрываются и больше не существуют.</p><H3><A NAME="Head2;"></a><A NAME="1004272"></a>Обращение к фрэймам и навигация по ним</H3>
<hr><p><A NAME="1004273"></a>Поскольку фрэймы являются типом окна, Вы обращаетесь к фрэймам и перемещаетесь
по ним, как по окнам. См. <A HREF="#1004300">"Обращение к Окнам и Фрэймам"</a> и <A HREF="#1004326">"Навигация по
Окнам и Фрэймам"</a>.</p><H3><A NAME="Head2;"></a><A NAME="1004274"></a>Создание и обновление фрэймов: пример</H3>
<hr><p><A NAME="1004275"></a>Если Вы создаёте набор фрэймов/frameset из предыдущего раздела для представления
информации музыкального клуба, фрэймы и их HTML-файлы могут иметь следующее содержимое:</p>
<ul><LI><A NAME="1004276"></a><CODE>category.phpl</CODE>, во фрэйме <CODE>listFrame</CODE>, содержит список
музыкантов, отсортированный по категориям.</LI><LI><A NAME="1004277"></a>
<CODE>titles.phpl</CODE>, во фрэйме <CODE>contentFrame</CODE>, содержит
алфавитный список музыкантов и произведений каждого.</LI><LI><A NAME="1004278"></a>
<CODE>navigate.phpl</CODE>, во фрэйме <CODE>navigateFrame</CODE>, содержит
гипертекстовые ссылки для выбора представления музыкантов в списке <CODE>listFrame</CODE>: по алфавиту или по категориям. Также в это файле имеется ссылка на описание
музыкантов.</LI><LI><A NAME="1004279"></a>Дополнительный файл, <CODE>alphabet.phpl</CODE>, содержит список музыкантов,
отсортированный по алфавиту. Этот файл выводится во фрэйме <CODE>listFrame</CODE>,
если пользователь щёлкает по гиперссылке для отображения в алфавитном порядке.</LI></ul><p><A NAME="1004282"></a>
Файл <CODE>category.phpl</CODE> (список по категориям) содержит код типа такого:</p>
<PRE><A NAME="1004283"></a><B>Music Club Artists</B><br><P><B>Jazz</B><br><LI><A HREF=titles.phpl#0001 TARGET="contentFrame">Toshiko Akiyoshi</A><br><LI><A HREF=titles.phpl#0006 TARGET="contentFrame">John Coltrane</A><br><LI><A HREF=titles.phpl#0007 TARGET="contentFrame">Miles Davis</A><br><LI><A HREF=titles.phpl#0010 TARGET="contentFrame">Dexter Gordon</A></PRE><PRE><A NAME="1009087"></a><P><B>Soul</B><br><LI><A HREF=titles.phpl#0003 TARGET="contentFrame">Betty Carter</A><br><LI><A HREF=titles.phpl#0004 TARGET="contentFrame">Ray Charles</A><br>...</PRE>
<p><A NAME="1004284"></a>Файл <CODE>alphabet.phpl</CODE> (алфавитный список) содержит код типа такого:</p>
<PRE><A NAME="1004285"></a><B>Music Club Artists</B><br><LI><A HREF=titles.phpl#0001 TARGET="contentFrame">Toshiko Akiyoshi</A><br><LI><A HREF=titles.phpl#0002 TARGET="contentFrame">The Beatles</A><br><LI><A HREF=titles.phpl#0003 TARGET="contentFrame">Betty Carter</A><br><LI><A HREF=titles.phpl#0004 TARGET="contentFrame">Ray Charles</A><br>...</PRE>
<p><A NAME="1004286"></a>Файл <CODE>navigate.phpl</CODE> (ссылки внизу экрана) содержит код типа
нижеприведённого. Обратите внимание, что target для файла <CODE>artists.phpl</CODE>
это "_parent." Если пользователь щёлкает по гиперссылке, все окно
перерисовывается, потому что окно <CODE>top</CODE> является родителем для <CODE>navigateFrame</CODE>.</p>
<PRE><A NAME="1004287"></a><A HREF=alphabet.phpl TARGET="listFrame"><B>Alphabetical</B></A><br>&nbsp&nbsp&nbsp<br><A HREF=category.phpl TARGET="listFrame"><B>By category</B></A><br>&nbsp&nbsp&nbsp<br><A HREF="artists.phpl" TARGET="_parent"><br> <B>Musician Descriptions</B></A></PRE>
<p><A NAME="1004288"></a>Файл <CODE>titles.phpl</CODE> (главный файл, отображаемый в правом фрэйме)
содержит код типа такого:</p>
<PRE><A NAME="1005992"></a><A NAME="0001"><H3>Toshiko Akiyoshi</H3></A><br><P>Interlude</PRE><PRE><A NAME="1009115"></a><A NAME="0002"><H3>The Beatles</H3></A><br><P>Please Please Me</PRE><PRE><A NAME="1009118"></a><A NAME="0003"><H3>Betty Carter</H3></A><br><P>Ray Charles and Betty Carter<br>...</PRE>
<H2><A NAME="Referring to Windows and Frames"><A NAME="1004300"></a>Обращение к окнам и фрэймам</H2><hr>
<p><A NAME="1004301"></a>Имя, используемое Вами для обращения к окну,
зависит того, ссылаетесь ли Вы на свойства, методы и обработчики окна, или
ссылаетесь на окно как на цельtarget при отправке формы или для гиперссылок.</p><p><A NAME="1005205"></a>
Поскольку объект <CODE>window</CODE> это объект верхнего уровня в иерархии
клиентского JavaScript, он работает исключительно как контейнер объектов в любом окне.</p>
<H3><A NAME="Head2;"></a><A NAME="1004302"></a>Обращение к свойствам, методам и обработчикам</H3><hr><p><A NAME="1004303"></a>
Вы можете обратится к свойства, методам и обработчикам текущего или другого
окна (если другое окно именовано) через использование одной из следующих техник:</p><ul><LI><A NAME="1004304"></a>
<CODE>self</CODE> или <CODE>window</CODE>: <CODE>self</CODE> и <CODE>window</CODE>
являются синонимами текущего окна, и Вы можете использовать их по выбору для
обращения к текущему окну. Например, Вы можете закрыть текущее окно, вызвав <CODE>window.close()</CODE>
или <CODE>self.close()</CODE>.</LI><LI><A NAME="1004305"></a>
<CODE>top</CODE> или <CODE>parent</CODE>: <CODE>top</CODE> и <CODE>parent</CODE>
также являются синонимами, которые могут использоваться как имена окна.<br>
<CODE>top</CODE> можно использовать для любого окна; оно ссылается на самое верхнее окно Navigator'а.<br>
<CODE>parent</CODE> можно использовать для фрэйма; оно ссылается на окно с
тэгом frameset, содержащее данный фрэйм. Например, для фрэйма <CODE>frame1</CODE>,
оператор <CODE>parent.frame2.document.bgColor="teal"</CODE> изменяет фон
фрэйма <CODE>frame2</CODE> на teal, где <CODE>frame2</CODE> это дочерний фрэйм текущего frameset.</LI><LI><A NAME="1004306"></a>
Имя переменной окна: переменная окна это переменная, специфицированная при
открытии окна. Например, <CODE>msgWindow.close()</CODE> закрывает окно <CODE>msgWindow</CODE>.</LI><LI><A NAME="1005750"></a>
Отсутствие имени окна: поскольку существование текущего окна подразумевается, Вы
не обязаны обращаться к окну по имени, когда вызываете его методы и
присваиваете значения свойств. Например, <CODE>close()</CODE> закрывает
текущее окно. Однако, когда Вы открываете или закрываете окно обработчиком
события, Вы обязаны специфицировать <CODE>window.open()</CODE> или <CODE>window.close()</CODE>
вместо простого <CODE>open()</CODE> или <CODE>close()</CODE>. Из-за области
видимости static-объектов в JavaScript, вызов <CODE>close()</CODE> без
специфицирования имени объекта эквивалентен <CODE>document.close()</CODE>.</LI></ul><p><A NAME="1004308"></a>
Дополнительно об этих техниках см. объект <CODE>window</CODE> в книге <I>
<a TARGET="_top" href="../clientref13/index.php">Клиентский JavaScript. </a></I>
<a href="../clientref13/index.php"><i>Справочник</i></a>.</p><p><A NAME="1004310"></a>
<B>Пример 1: обращение к текущему окну.</B> Следующий оператор ссылается на
форму <CODE>musicForm</CODE> в текущем окне. Оператор выводит диалог alert, если
переключатель/checkbox отмечен.</p>
<PRE><A NAME="1004311"></a>if (document.musicForm.checkbox1.checked) {<br> alert('The checkbox on the musicForm is checked!')}</PRE>
<p><A NAME="1004312"></a><B>Пример 2: обращение к другому окну.</B> Следующие операторы ссылаются на
форму <CODE>musicForm</CODE>, находящуюся в окне <CODE>checkboxWin</CODE>.
Операторы определяют, выбран ли checkbox, выбирают checkbox, определяют, выбрана
ли вторая опция объекта <CODE>Select</CODE>, и выбирают вторую опцию объекта <CODE>Select</CODE>.
Даже если значения объектов изменяются в другом окне (<CODE>checkboxWin</CODE>),
текущее окно остаётся активным: отметка переключателя и выбор selection-опции не передают фокус окну.</p>
<PRE><A NAME="1005918"></a>// определить, отмечен ли checkbox<br>if (checkboxWin.document.musicForm.checkbox2.checked) {<br> alert('The checkbox on the musicForm in checkboxWin is checked!')}</PRE><PRE><A NAME="1008967"></a>// отметить checkbox<br>checkboxWin.document.musicForm.checkbox2.checked=true</PRE><PRE><A NAME="1008968"></a>// определить, выбрана ли опция объекта Select<br>if (checkboxWin.document.musicForm.musicTypes.options[1].selected)<br> {alert('Option 1 is selected!')}</PRE><PRE><A NAME="1008969"></a>// выбрать опцию объекта Select<br>checkboxWin.document.musicForm.musicTypes.selectedIndex=1</PRE>
<p><A NAME="1005919"></a><B>Пример 3: обращение к фрэйму в другом окне.</B> Следующий оператор обращается
к фрэйму <CODE>frame2</CODE>, который находится в окне <CODE>window2</CODE>.
Оператор изменяет цвет фона <CODE>frame2</CODE> на violet. Имя фрэйма, <CODE>frame2</CODE>,
обязано быть специфицировано в тэге <CODE>FRAMESET</CODE>, создающем набор фрэймов.</p>
<PRE><A NAME="1004315"></a>window2.frame2.document.bgColor="violet"</PRE>
<H3><A NAME="Head2;"></a><A NAME="1004316"></a>Обращение к окну при отправке формы или из гиперссылки</H3>
<hr><p><A NAME="1004317"></a>Вы используете имя окна (не переменную окна) при обращении к окну как к цели/target
при отправке формы или из гиперссылки (атрибут <CODE>TARGET</CODE> тэга <CODE>FORM</CODE>
или <CODE>A</CODE>). Специфицируемое окно это окно, в которое загружается ссылка, или, для формы, окно, где выводится ответ сервера.</p>
<p><A NAME="1004318"></a>Следующий пример создаёт гиперссылку на второе окно. Имеется кнопка, которая
открывает пустое окно <CODE>window2</CODE>, гиперссылка, загружающая файл <CODE>doc2.phpl</CODE>
во вновь открытое окно, и кнопка, закрывающая окно. </p>
<PRE><A NAME="1004319"></a><FORM><br><INPUT TYPE="button" VALUE="Open Second Window"<br> onClick="msgWindow=window.open('','window2',<br> 'resizable=no,width=200,height=200')"><br><P><br><A HREF="doc2.phpl" TARGET="window2"> Load a file into window2</A><br><P><br><INPUT TYPE="button" VALUE="Close Second Window"<br> onClick="msgWindow.close()"><br></FORM></PRE>
<p><A NAME="1009566"></a>Если пользователь выбирает сначала кнопку Open Second Window, а затем
гиперссылку, Communicator открывает небольшое окно, специфицированное в кнопке,
а затем загружает в него файл <CODE>doc2.phpl</CODE>.</p><p><A NAME="1009591"></a>
Если пользователь выбирает гиперссылку до создания окна <CODE>window2</CODE> с
помощью кнопки, Communicator создаёт <CODE>window2</CODE> с параметрами по
умолчанию и загружает <CODE>doc2.phpl</CODE> в это окно.
Если пользователь позднее щёлкает кнопку Open Second Window button, Communicator
изменяет параметры уже открытого окна на специфицированные в обработчике события.</p>
<H2><A NAME="Navigating Among Windows and Frames"><A NAME="1004326"></a>Навигация по окнам и фрэймам</H2><hr>
<p><A NAME="1006791"></a>Несколько окон Navigator'а могут быть открыты в одно
время. Пользователь может перемещаться между этими окнами, щёлкая по ним, чтобы
сделать активными, или передавая им фокус. Если окно имеет фокус, оно переходит
на передний план и несколько изменяет свой вид. Например, может измениться цвет
строки заголовка. Визуальное расположение зависит от используемой платформы.</p><p><A NAME="1005952"></a>
Вы можете передать фокус окну программно, передавая фокус объекту в этом окне
или специфицируя окно как цель гиперссылки. Хотя Вы можете изменять значения
объектов в другом окне, это не сделает второе окно активным: активным останется текущее окно.</p><p><A NAME="1009555"></a>
Вы перемещаетесь по фрэймам так же, как по окнам.</p><p><A NAME="1004329"></a>
<B>Пример 1: передача фокуса объекту в другом окне.</B> Следующий оператор
передаёт фокус <CODE>Text</CODE>-объекту <CODE>city</CODE> в окне <CODE>checkboxWin</CODE>.
Поскольку <CODE>Text</CODE>-объект получает фокус, окно также получает фокус и становится
активным. В примере имеется также оператор, создающий окно <CODE>checkboxWin</CODE>.</p>
<PRE><A NAME="1004330"></a>checkboxWin=window.open("doc2.phpl")<br>...<br>checkboxWin.document.musicForm.city.focus()</PRE>
<p><A NAME="1004331"></a><B>Пример 2: передача фокуса другому окну с использованием гиперссылки.</B> Следующий
оператор специфицирует <CODE>window2</CODE> как цель/target для гипертекстовой
ссылки. Если пользователь щёлкает гиперссылку, фокус переводится на <CODE>window2</CODE>.
Если <CODE>window2</CODE> не существует, оно создаётся.</p>
<PRE><A NAME="1004332"></a><A HREF="doc2.phpl" TARGET="window2"> Load a file into window2</A></PRE>
<h5><a href="contents.php">Оглавление</a> | <a href="navobj.php">Назад</a>
| <a href="advtopic.php">Вперёд</a> | <a href="bklast.php">Индекс</a></h5>
<hr><P ALIGN=right><FONT SIZE=-2><I>Дата последнего обновления: 27 мая 1999 года.</I><br>
</BODY></HTML>
<?php
echo gb.'<a href="../../ycheb">Учебники</a>'.div;
echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;
foot(); ?>