Основы Web-инжиниринга. Часть 1. Громов Ю.Ю - 127 стр.

UptoLike

Для начала определяется сообщение, которое будет отображаться в бегущей строке. Для сохранения текста сообщения
будем использовать строковую переменную msg. В самом начале сценария определим значение переменной:
msg = "Это пример бегущего сообщения."
Далее определяем следующую строковую переменную spacer. Ее значение будет отображаться между копиями значе-
ний переменной msg:
spacer = " ";
Кроме того, нам понадобится еще одна переменнаячисловая переменная, имеющая числовое значение места распо-
ложения строки. Назовем ее pos и определим начальное значение 0.
Создание бегущего сообщения проводится с помощью функции ScrollMessage(). Код функции ScrollMessage():
function ScrollMessage() {
window.status = msg.substring(pos, msg.length) + spacer + msg.substring(0,pos);
pos++;
if (pos > msg.length) pos = 0;
window.setTimeout("ScrollMessage()",200);
}
4.18. УПРАВЛЕНИЕ ФОКУСОМ
Фокусэто характеристика текущего окна, фрейма или поля формы. Под фокусом понимают возможность активизации
свойств и методов объекта. Например, окно в фокусе, если оно является текущим, т.е. лежит поверх всех других окон и ис-
полняются его методы или можно получить доступ к его свойствам.
4.18.1. Управление фокусом в окнах
Для управления фокусом у объекта класса "окно" существуют два метода: focus() и blur(). Первый передает фокус
в окно, в то время как второй фокус из окна убирает. Рассмотрим простой пример:
function hide_window()
{
wid=window.open("","test",
"width=400,height=200");
wid.opener.focus();
wid.document.open();
... wid.document.close();
}
В данном примере новое окно открывается и сразу теряет фокус, прячется за основным окном-родителем. Если при
первичном нажатии на кнопку оно еще всплывает и только после этого прячется, то при повторном нажатии пользователь не
видит появления нового окна, так как оно уже открыто и меняется только его содержимое.
Для того чтобы этого не происходило, нужно после открытия передавать фокус на новое окно:
function visible_window()
{
wid=window.open("","test",
"width=400,height=200");
wid.focus();
wid.document.open();
... wid.document.close();
}
Если теперь нажимать попеременно кнопки "Скрытое окно" и "Видимое окно", окно будет то появляться, то исчезать.
При этом новых окон не появляется, так как с одним и тем же именем может быть открыто только одно окно.
Невидимое окно может доставить пользователю неприятности, из которых самая безобиднаяотсутствие реакции на
его действия. Код просто записывается в невидимое окно. Но ведь в скрытом окне можно что-нибудь и запустить. Для этого
стоит только проверить, существует ли данное окно или нет, и если оно есть и не в фокусе, то активизировать в нем какую-
нибудь программу.
Для реализации такого сценария достаточно использовать метод окна onblur(). Его можно также задать в контейнере
BODY в качестве обработчика события onBlur, но в этом случае он видим пользователю. Мы воспользуемся этим методом
"в лоб":
window.onblur = new Function("window.defaultStatus =
'Background started...';");
window.onfocus = new Function("window.defaultStatus =
'Document:Done';");
Обратите внимание на поле статуса браузера. Оно демонстрирует возможность выполнения функции в фоновом режи-
ме. Кроме того, onblur() в этом виде не отрабатывает в Internet Explorer. Причина кроется в прототипе объекта и возмож-
ности его переназначения программистом.