Как было сказано в предыдущем уроке, объект document
не является самым старшим в иерархии объектов браузера. В частности, на него можно сослаться следующим образом: window.document
, что подразумевает существование объекта старшего уровня window
, который соответствует окну браузера. Мы уже использовали этот объект в примере с открытием нового окна методами JavaScript.
Свойства объекта Window
Сведём все основные свойства в таблицу, а потом рассмотрим их подробнее.
frames: |
Массив всех фреймов данного окна |
length: |
Количество фреймов в родительском окне |
name: |
Имя окна |
parent: |
Имя окна, содержащего набор фреймов: способ сослаться на документ, содержащий frameset , из вложенного в него фрейма |
self: |
Имя текущего окна |
status: |
Текущее сообщение, отображаемое в строке состояния браузера |
top: |
Окно самого верхнего уровня |
window: |
Синоним имени текущего окна |
А теперь по пунктам.
Предположим, окно браузера содержит несколько фреймов, имя одного из которых -- navframe
. Чтобы сослаться на него из другого фрейма, заключённого в тот же frameset
, используется следующий синтаксис (изменим надпись на кнопке внутри одной из форм, содержащихся в этом фрейме):
parent.navframe.document.forms[0].goButton.value="что_то_там";
Главное -- понять, что parent
есть родительское окно для всех фреймов, заключённых в один frameset
, и оно используется для указания пути в общей иерархии к нужному нам объекту. Следующий важный момент заключается в том, что каждый фрейм, будучи по сути независимым HTML-документом, содержит объект document
, после которого дальнейший путь к объекту описывается уже знакомым нам способом.
Далее. Один из примеров использования объекта parent.length
может оказаться очень полезным для многих начинающих веб-строителей, пользующихся бесплатным хостингом.
<SCRIPT>
if (self.parent.frames.length != 0)
self.parent.location="index.html";
</SCRIPT>
Если страницу, в которую встроен такой скрипт, срабатывающий, скажем, на событие body.onload
, пытаться принудительным образом загрузить в frameset
(как это делают многие провайдеры бесплатного хостинга), скрипт уничтожит этот frameset
, и ваша страница займёт всё доступное место в окне браузера. Правда, никто не гарантирует, что провайдер будет этому рад и не выгонит вас вон.
Осталось совсем немного... объект self
используется тогда, когда нужно сослаться на текущее окно, не называя его по имени явно. Объект top
позволяет сослаться на окно самого верхнего уровня из фрейма любого уровня вложенности. Объект window
, в принципе, означает то же самое, что и self
, но иногда эти определения не взаимозаменяемы, о чём у нас с вами ещё будет возможность поговорить.
Наконец объект status
позволяет нам вернуть значение строки состояния браузера или записать туда собственное.
top
Методы объекта Window
Перечислю главные:
alert: |
Вывод диалога с сообщением и кнопкой ОК |
close: |
Закрытие окна |
confirm: |
Вывод диалога с кнопками ОК и Cancel |
open: |
Открытие окна |
prompt: |
Вывод диалога с полем ввода |
setTimeout: |
Установка таймера |
clearTimeout: |
Сброс таймера |
Использовать метод alert
очень просто: вы пишете в коде
alert("Вы попали на мою веб-страницу");
и получаете диалоговое окно, выглядящее следующим образом:
То, что я привёл именно такой пример, не означает, что вам действительно нужно писать скрипт, который будет приветствовать посетителей подобным образом. В таком случае количество уникальных посетителей страницы всегда будет равняться общему количеству визитов, т. к. в эту воду точно никто не захочет вступать дважды. ;-)
Метод confirm
обычно используют примерно так:
if (confirm("Хотите увидеть новые фотографии?"))
{
window.location.href="newphotos.htm";
}
else
{
window.location.href="oldphotos.htm";
}
Диалоговое окно, возникающее в результате работы такого скрипта, показано на картинке ниже.
А вот пример использования метода prompt
:
pass=prompt("Cообщение","Строка_ввода_по_умолчанию");
Так переменной pass
передаётся значение пароля, возвращаемое диалоговым окном. Само окно показано на рисунке ниже.
Метод close
вызывается строкой wndName.close();
, где wndName
-- имя окна, которое нужно закрыть.
О методе open
на этот раз поговорим поподробнее. Один из вариантов записи выглядит так:
wndMyWin = open("имя_HTML-файла","имя_окна",
"параметры_окна");
Основные параметры приведены в таблице:
toolbar: |
Если значение параметра равно yes или 1, окно снабжается панелью инструментов, если же значение равно no или 0, панели инструментов не будет. |
location: |
Параметр определяет, будет ли отображаться поле ввода адреса документов |
status: |
Отображение строки состояния |
menubar: |
Отображение линейки меню |
scrollbars: |
Отображение полос прокрутки |
resizable: |
Параметр определяет, можно ли будет изменять размер создаваемого окна |
width: |
Ширина окна в пикселах |
height: |
Высота окна в пикселах |
Таким образом, типичный вызов этого метода будет выглядеть примерно так:
wndMyWin = open("имя_HTML-файла","имя_окна",
"toolbar=no,menubar=no,width=150,height=300");
Значения всех параметров, кроме width
и height
, определяются так же, как это уже описано в первой строке таблицы.
Теперь о таймерах. Метод setTimeout
создаёт и запускает таймер, возвращая его идентификатор.
var command="MyFunctionn()";
idTimer=window.setTimeout(command,1000);
Время задержки в приведённом примере составляет 10 секунд, по прошествии этого времени запускается функция MyFunction
.
Метод clearTimeour
останавливает таймер, запущенный методом setTimeout
:
clearTimeout(idTimer);
Эти два метода очень полезны для периодического вызова определённых функций или организации анимации средствами JavaScript.