Использование окон и фреймов

Управление окнами с помощью объектов

Вы уже познакомились со иерархией объектов браузера, и знаете, что объект window выступает в роли родительского, а document, history и location - в роли дочерних.

Сегодня мы детально познакомимся с объектом window. Как вы уже догадались, я покажу вам, как с помощью этого объекта управлять окнами. Следует заметить, что этот же объект используется и для управления фреймами.

Объект window всегда соответствует текущему открытому окну (окну документа, который содержит сценарий). Текущее окно также определяется ключевым словом self. В действительности на экране одновременно отображается несколько окон и каждое из них управляется своим собственным именем.

Создание нового окна

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

Новое окно браузера создается с помощью метода window.open(). Типичный оператор создания нового окна имеет следующий вид:

WinObj = window.open("URL", "WindowName", "Feature List");

В записи этого оператора метода window.open() встречаются следующие элементы:

Переменная WinObj сохраняет данные нового объекта window. Ее имя можно использовать с методами и свойствами созданного объекта window.

  • Первый параметр метода window.open - это URL документа, загружаемого в окне. Если его оставить назаполненным, то окно останется пустым.
  • Второй параметр определяет название окна. Его значение приписывается свойству name нового объекта window.
  • Третий параметр представляет список необязательных опций, разделенных запятой. С их помощью вы определите вид нового окна: наличие в нем панелей инструментов, строки состояния и других элементов. Они позволяют создавать различные "плавающие" окна, отличающиеся от стандартных окон браузера.

    В качестве примера опций третьего параметра метода window.open() можно привести width и height, top и left определяющие размеры окна и положение окна относительно левого верхнего угла экрана, а также toolbar, location, directories, status и menubar, принимающие одно из двух значений yes (1) или no (2). Указывайте только те опции, значения которых необходимо изменить, неуказанные опции принимают значения по умолчанию. Ниже приведен пример создания нового окна, не содержащего панели инструментов и строки состояния с размерами 100x120 пикселей.

    SmallWin = window.open("", "small", "width=100, height=120, toolbar=0, status=0");

    Открытие и закрытие окон

    Окно создается именно для того, чтобы его закрывали и открывали. Метод window.close() закрывает окно. Без пользовательских полномочий вы не можете закрыть основное окно. Главное предназначение этого метода - закрытие созданных вами окон. Например следующий оператор закрывает окно с именем updatewindow:

    updatewindow.close();

    В другом примере представим документ HTML, позволяющий открывать новое окно после щелчка на кнопке. (Появляется окно маленького размера. Это позволяет отличить его от основного окна браузера.) После щелчка на второй кнопке окно исчезает. Третья кнопка используется для закрытия текущего (основного окна).

    Листинг 22.1. Документ HTML, позволяющий открывать и закрывать окна

    
    1:    <HTML>
    2:    <HEAD>
    3:    <TITLE>Создание нового окна</TITLE>
    4:    </HEAD>
    5:    <BODY>
    6:    <H1>Создание нового окна</H1>
    7:    <HR>Для открытия и закрытия окна используйте эти кнопки
    8:    <HR>
    9:    <FORM NAME="winform">
    10:   <INPUT TYPE="button" VALUE="Открыть новое окно"
    11:   onClick="NewWin=window.open('', 'NewWin', 
    12:   'toolbar=no,status=no,width=100,height=200,top=400,left=400');">
    13:   <p><INPUT TYPE="button" VALUE="Закрыть новое окно"
    14:   onClick="NewWin.close();">
    15:   <p><INPUT TYPE="button" VALUE="Закрыть главное окно"
    16:   onClick="window.close();">
    17:   </FORM>
    18:   <HR>
    19:   </BODY>
    20:   </HTML>
    
                       

    В этой программе активно используются обработчики событий. После щелчка на любой кнопке запускается отдельный обработчик событий. В главном окне есть три кнопки для выполнения описанных выше действий и открытии нового маленького окна.

    Временные задержки

    Иногда самое тяжелое - это заставить сценарий некоторое время не выполнять никаких действий. JavaScript содержит специальные функции, позволяющие задать временную задержку. Метод window.setTimeout определяет временную задержку перед выполнением указанной команды.

    Временная задержка не прекращает выполнение сценария. Она только определяет время, через которое будет выполняться следующая после метода setTimeout() команда. Во время ожидания выполнения необходимой команды браузер продолжает совершать другие действия, для которых временная задержка не определена.

    Временная задержка начинается при вызове метода setTimeout(). Он имеет два параметра. Первый - это оператор JavaScript (или группа операторов), заключенный в скобки. Второй параметр - это время задержки в миллисекундах (тысячных долях секунды). В приведенном ниже примере показано, как задать команду отображения предупреждения с задержкой в 5 секунд:

    ident = window.setTimeout("alert('Ваше время истекло. Кто не успел - то не успел.')", 5000);

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

    Переменная (в примере ident) имеет собственное имя и представляет собой идентификатор временной задержки. Это позволяет в одном сценарии использовать несколько разных временных задержек. До истечения указанного времени вы можете с помощью метода clearTimeout() прервать задержку. Для этого в скобках укажите идентификатор:

    window.clearTimeout(ident);

    Обновление страницы с задержкой

    Обычно операция с временной задержкой выполняется однократно, поскольку в операторе setTimeout() операторы действия указываются только один раз. Иногда необходимо выполнить одни и те же действия с временной задержкой несколько раз. Например, если страница содержит часы или счетчик, значения которых постоянно изменяются.

    Повторение операций с временной задержкой также выполняется с помощью метода setTimeout(). В листинге 22.2 приведен сценарий с повторяющимися временными задержками.

    Листинг 22.2. Сценарий обновления страницы через каждые две секунды

    
    1:    <HTML>
    2:    <HEAD>
    3:    <TITLE>Пример задержки</TITLE>
    4:    <SCRIPT LANGUAGE="JavaScript">
    5:        var counter = 0;
    6:      //Вызов функции обновления через каждые 2 с
    7:    ID = window.setTimeout("Update();", 2000);
    8:    function Update() {
    9:        counter++;
    10:       window.status="Отсчет: " + counter;
    11:   document.form1.input1.value = "Отсчет: " + counter;
    12:     //Задержка перед следующим значением
    13:       ID = window.setTimeout("Update();", 2000);
    14:   }
    15:   </SCRIPT>
    16:   </HEAD>
    17:   <BODY>
    18:   <H1>Пример задержки</H1>
    19:   <HR>
    20:   Значение в строке состояния и на странице обновляется каждые 2 с.
    21:   Щелкните на кнопке RESET для запуска счетчика с нуля, а на STOP
    22:   для остановки счетчика.
    23:   <HR>
    24:   <FORM NAME="form1">
    25:   <INPUT TYPE="text" NAME="input1" SIZE="40"><BR>
    26:   <INPUT TYPE="button" VALUE="RESET" onClick="counter=0;"><BR>
    27:   <INPUT TYPE="button" VALUE="STOP" onClick="window.clearTimeout(ID);"><BR>
    28:   </FORM>
    29:   <HR>
    30:   </BODY>
    31:   </HTML>
    
                       

    Эта программа обновляет сообщение в строке состояния и текстовом поле через каждые две секунды. Сообщение содержит значение счетчика. Для повторного запуска счетчика используется кнопка RESET, а для прекращения счета - STOP.

    В этом сценарии метод setTimeout() первый раз запускается при загрузке страницы. Последующие вызовы метода происходят при каждом обновлении страницы, т.е. через каждые две секунды. Обновление страницы прводится с помощью функции Update().

    С ее же помощью к значению счетчика добавляется единица. Кнопка RESET применяется для обнуления значения счетчика, а STOP - для вызова метода clearTimeout().

nextn.bmp (246 bytes)

home.gif (161 bytes)

next.gif (900 bytes)

Сайт управляется системой uCoz