Интернет Университет информационных технологий www.intuit.ru
мои курсы мои настройки моя корзина помощь
  Лекции
Основы web-технологий
Глава 1.
Введение в HTML-разметку
Глава 2.
Применение каскадных таблиц стилей
Глава 3.
JavaScript
  13.   Назначение и применение JavaScri...
  14.   Программируем свойства окна браузера
  15.   Программируем формы
  16.   Программируем графику
  17.   Программируем гипертекстовые пер...
  18.   Программируем "за кадром"
Глава 4.
Интерфейс Web-приложений
      Экзамен
      Ссылки к курсу

  Общение
однокурсники
форум по курсу
вопрос преподавателю

Основы web-технологий
Глава 3. JavaScript версия для печати: HTML, PDF
Лекция #14: Программируем свойства окна браузера Страницы: « 1 2 3 вопросы »

Управление окнами

Что можно сделать с окном? Открыть (создать), закрыть (удалить), положить его поверх всех других открытых окон (передать фокус). Кроме того, можно управлять свойствами окна и свойствами подчиненных ему объектов. Описанию основных свойств посвящен раздел "Программируем свойства окна браузера", поэтому сосредоточимся на простых и наиболее популярных методах управления окнами:

  • alert();
  • confirm();
  • prompt();
  • open();
  • close();
  • focus();
  • setTimeout();
  • clearTimeout().

Здесь не указаны только два метода: scroll() и blur().

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

Второй метод уводит фокус с окна. При этом совершенно непонятно, куда этот фокус будет передан. Лучше целенаправленно передать фокус, чем просто его потерять.

window.alert()

Метод alert() позволяет выдать окно предупреждения:

<A HREF="javascript:window.alert('Внимание')">Повторите запрос!</A>

Все очень просто, но нужно иметь в виду, что сообщения выводятся системным фонтом, следовательно, для получения предупреждений на русском языке нужна локализованная версия ОС.

window.confirm()

Метод confirm() позволяет задать пользователю вопрос, на который тот может ответить либо положительно, либо отрицательно:

<FORM>
<INPUT TYPE=button VALUE="Что вы знаете о JavaScript?"
onClick="
if(window.confirm('Знаю все')==true)
{ document.forms[0].elements[1].value='Да'; }
else
{ document.forms[0].elements[1].value='Нет'; };"><BR>
</FORM>

Все ограничения для сообщений на русском языке, которые были описаны для метода alert(), справедливы и для метода confirm().

window.prompt()

Метод prompt() позволяет принять от пользователя короткую строку текста, которая набирается в поле ввода информационного окна:

<FORM>
<INPUT TYPE=button VALUE="Открыть окно ввода" onClick=
"document.forms[1].elements[1].value=window.prompt('Введите сообщение');">
<INPUT SIZE=30>
</FORM>

Введенную пользователем строчку можно присвоить любой переменной и потом разбирать ее в JavaScript-программе.

window.open()

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

open("URL","window_name","param,param,...",replace);

где: URL — страница, которая будет загружена в новое окно,
window_name — имя окна, которое можно использовать в атрибуте TARGET в контейнерах A и FORM.

Параметры Назначение
replace Позволяет при открытии окна управлять записью в массив History.
param Список параметров
width Ширина окна в пикселах
height Высота окна в пикселах
toolbar Создает окно с системными кнопками браузера
location Создает окно с полем location
directories Создает окно с меню предпочтений пользователя
status Создает окно с полем статуса status
menubar Создает окно с меню
scrollbar Создает окно с полосами прокрутки
resizable Создает окно, размер которого можно будет изменять

Приведем следующий пример:

<FORM>
<INPUT TYPE=button VALUE="Простое окно" onClick="window.open('about:blank','test1', 'directories=no,height=200,location=no,menubar=no,resizable=no,scrollbars=no, status=no,toolbar=no,width=200');">
<INPUT TYPE=button VALUE="Сложное окно" onClick="window.open('about:blank','test2','directories=yes, height=200,location=yes,menubar=yes,resizable=yes, scrollbars=yes, status=yes,toolbar=yes,width=200');">
</FORM>

При нажатии кнопки "простое окно" получаем окно со следующими параметрами:

directories=no - окно без меню
height=200 - ширина 200 px
location=no - поле location отсутствует
menubar=no - без меню
resizable=no - размер изменять нельзя
scrollbars=no - полосы прокрутки отсутствуют
status=no - статусная строка отсутствует
toolbar=no - системные кнопки браузера отсутствуют
width=200 - длина 200

При нажатии кнопки "сложное окно" получаем окно, где:

directories=no - окно с меню
height=200 - ширина 200 px
location=yes - поле location отсутствует
menubar=yes - без меню
resizabla=yes - размер изменять нельзя
scrollbars=yes - есть полосы прокрутки
status=yes - статусная строка есть
toolbar=yes - системные кнопки браузера есть
width=200 - длина 200

window.close()

Метод close() — это оборотная сторона медали метода open(). Он позволяет закрыть окно. Чаще всего возникает вопрос, какое из окон, собственно, следует закрыть. Если необходимо закрыть текущее, то:

window.close();
self.close();

Если необходимо закрыть родительское окно, т.е. окно, из которого было открыто текущее, то:

window.opener.close();

Если необходимо закрыть произвольное окно, то тогда сначала нужно получить его идентификатор:

id=window.open();
...
id.close();

Как видно из последнего примера, закрывают окно не по имени (значение атрибута TARGET тут ни при чем), а используют указатель на объект.

windows.focus()

Метод focus() применяется для передачи фокуса в окно, с которым он использовался. Передача фокуса полезна как при открытии окна, так и при его закрытии, не говоря уже о случаях, когда нужно выбирать окна. Рассмотрим пример.

Открываем окно и, не закрывая его, снова откроем окно с таким же именем, но с другим текстом. Новое окно не появилось поверх основного окна, так как фокус ему не был передан. Теперь повторим открытие окна, но уже с передачей фокуса:

function myfocus(a)
{
id = window.open("","example","scrollbars,width=300,height=200");
//открываем окно и заводим переменную с указателем на него
//если окно с таким именем существует, то новое окно не создается,
//а открывается поток для записи в окно с этим именем
if(a==1)
{
id.document.open();
//открываем поток ввода в уже созданное окно
id.document.write("<CENTER>Открыли окно в первый раз");
//Пишем в этот поток
}
if(a==2)
{
id.document.open();
id.document.write("<CENTER>Открыли окно во второй раз");
}
if(a==3)
{
id.focus();
//передаем фокус, затем выполняем те же действия, что и в предыдущем случае
id.document.open();
id.document.write("<CENTER>Открыли окно во второй раз");
}
id.document.write("<FORM><INPUT TYPE=button
onClick='window.close();' VALUE='Закрыть окно'></CENTER>");
id.document.close();
}

Поскольку мы пишем содержание нового окна из окна старого (родителя), то в качестве указателя на объект используем значение переменной id.

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()>
</FORM>

Нужно иметь в виду, что поток порождается всегда, даже в том случае, когда часы стоят. Если бы он создавался только при значении переменной flag равном единице, то при значении 0 он исчез бы, тогда при нажатии на кнопку часы продолжали бы стоять.

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>

В данном примере для остановки часов используется метод clearTimeout(). При этом, чтобы не порождалось множество потоков, проверяется значение указателя на объект потока.

Перейти к следующей странице »
версия для печати: HTML, PDF
Страницы: « 1 2 3 вопросы »
  Основные понятия
open, close, setTimeout, циклы, окно, область действия переменных, фрейм.
 
  Информация о лекции
В этой лекции рассматриваются приемы программирования свойств самого старшего объекта JavaScript – окна браузера. Рассматривается применение методов, объектов и свойств окна. Рассматриваются типовые примеры программирования окон и фреймов.
 
  Информация о главе
Глава 3. JavaScript
Курс посвящен изучению языка программирования JavaScrip. Главное внимание уделяется логике разработки JavaScript-кода и основным принципам его использования на страницах World Wide Web.
 
  Учебники к курсу
Основы web-технологий
Основы web-технологий
Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И.,
Интернет-университет информационных технологий - ИНТУИТ.ру.
Курс лекций посвящен основам Web-технологий. В его рамках рассматриваются язык гипертекстовой разметки HTML, язык программирования динамического контента JavaScript, спецификация разработки прикладного программного обеспечения CGI и спецификация описания стилей представления информации CSS. Допущено УМО в области прикладной информатики для студентов высших учебных заведений, обучающихся по специальности 351400 "Прикладная информатика".
Dynamic HTML
Айзекс С., BHV-Санкт-Петербург.
Настольная книга Web-мастера: эффективное применение HTML, CSS и JavaScript
Коржинский С.Н., КноРус.
Практические занятия по HTML. Краткий курс
Будилов В.А., Наука и техника.
все книги по курсу »