Что можно сделать с окном? Открыть (создать), закрыть (удалить), положить его поверх всех других открытых окон (передать фокус).
Кроме того, можно управлять свойствами окна и свойствами подчиненных ему объектов. Описанию основных свойств посвящен раздел «Программируем свойства окна браузера», поэтому сосредоточимся на простых и наиболее популярных методах управления окнами:
alert();
confirm();
prompt();
open();
close();
focus();
setTimeout();
clearTimeout().
1. window.alert()
Метод alert() позволяет выдать окно предупреждения:
Все очень просто, но нужно иметь в виду, что сообщения выводятся системным шрифтом, следовательно, для получения предупреждений на русском языкенужна локализованная версия ОС.
2. window.confirm()
Метод confirm() позволяет задать пользователю вопрос, на который тот может ответить либо положительно, либо отрицательно:
Введенную пользователем строчку можно присвоить любой переменной и потом разбирать ее в JavaScript-программе.
4. window.open()
У этого метода окна атрибутов больше, чем у некоторых объектов. Метод open() предназначен для создания новых окон. В общем случае его синтаксис выглядит следующим образом:
open(«URL»,"window_name","param,param,...", replace);
где: URL — страница, которая будет загружена в новое окно, window_name — имя окна, которое можно использовать в атрибуте TARGET в контейнерах A и FORM.
Таблица 2.
Параметры
Назначение
replace
Позволяет при открытии окна управлять записью в массив History
param
Список параметров
width
Ширина окна в пикселах
height
Высота окна в пикселах
toolbar
Создает окно с системными кнопками браузера
location
Создает окно с полем location
directories
Создает окно с меню предпочтений пользователя
status
Создает окно с полем статуса status
menubar
Создает окно с меню
scrollbars
Создает окно с полосами прокрутки
resizable
Создает окно, размер которого можно будет изменять
При нажатии кнопки «сложное окно» получаем окно, где:
directories=yes – окно с меню
height=200 – высота 200 px
location=yes – поле location есть
menubar=yes – меню есть
resizable=yes – размер изменять можно
scrollbars=yes – есть полосы прокрутки
status=yes – статусная строка есть
toolbar=yes – системные кнопки браузера есть
width=200 – ширина 200
5. window.close()
Метод close() — это оборотная сторона медали метода open(). Он позволяет закрыть окно. Чаще всего возникает вопрос, какое из окон, собственно, следует закрыть. Если необходимо закрыть текущее, то:
window.close();
self.close();
Если необходимо закрыть родительское окно, т.е. окно, из которого было открыто текущее, то:
window.opener.close();
Если необходимо закрыть произвольное окно, то тогда сначала нужно получить его идентификатор:
id=window.open();
...
id.close();
Как видно из последнего примера, закрывают окно не по имени (значение атрибута TARGET тут ни при чем), а используют указатель на объект.
6. window.setTimeout()
Метод setTimeout() используется для создания нового потока вычислений, исполнение которого откладывается на время (ms), указанное вторым аргументом:
idt = setTimeout("JavaScript_код",Time);
Типичное применение этой функции — организация автоматического изменения свойств объектов. Например, можно запустить часы в поле формы:
var flag=0;
var idp=null;
function myclock()
{
if(flag==1)
{
d = new Date();
window.document.c.f.value =
d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
}
idp=setTimeout("myclock();",500);
}
function flagss()
{
if(flag==0) flag=1; else flag=0;
}
...
<FORM NAME=c>
Текущее время:<INPUT NAME=f size=8><INPUT TYPE=button VALUE="Start/Stop"
onClick="flagss();myclock();">
</FORM>
Листинг 14.6.
Нужно иметь в виду, что поток порождается всегда, даже в том случае, когда часы стоят. Если бы он создавался только при значении переменной flag равном единице, то при значении 0 он исчез бы, тогда при нажатии на кнопку часы продолжали бы стоять.
7. window.clearTimeout
Метод clearTimeout() позволяет уничтожить поток, вызванный методом setTimeout(). Очевидно, что его применение позволяет более эффективно распределять ресурсы вычислительной установки. Для того чтобы использовать этот метод в примере с часами, нам нужно модифицировать функции и форму:
var idp1 = null;
function start()
{
d = new Date();
window.document.c1.f1.value =
d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
idp1=setTimeout("start();",500);
}
function stop()
{
clearTimeout(idp1);idp1=null;
}
...
<FORM NAME=c1>
Текущее время:<INPUT NAME=f1 size=8>
<INPUT TYPE=button VALUE="Start" onClick="if(idp1==null)start();">
<INPUT TYPE=button VALUE="Stop" onClick="if(idp1!=null)stop();">
</FORM>
Листинг 14.7.
В данном примере для остановки часов используется метод clearTimeout(). При этом, чтобы не порождалось множество потоков, проверяется значение указателя на объект потока.