Глава 2. ОБРАБОТКА СОБЫТИЯ НА VBScript
Правила формирования
записи для изменения свойств объектов
Объектная модель Windows предусматривает иерархию подчинения
объектов, что позволяет изменять свойства объектов, в зависимости от того,
какому уровню они подчиняются. Поэтому, всегда следует придерживаться простого
правила – требуется иметь в виду, что для изменения свойства объекта или для
того, чтобы получить свойство объекта, должна присутствовать пара Объект.Свойство, а для того чтобы дать
полное описание объекту, где он находится, необходимо указать уровень его
представления. ПРИМЕР4 демонстрирует варианты
описания объекта при получении свойств значений объектов и изменения их
свойств. Внешний вид Web-страницы,
рассматриваемого примера, показан на рис. 6. Особенность построения HTML кодов заключается в том, что первое текстовое окно
и вторая кнопка с наименованием «Очистить окна» принадлежат тегу HTML, который входит в объект Document
модели браузера. Документ всегда находится в текущем окне в единственном
экземпляре. Кнопка с наименование «Скопировать» и второе текстовое окно
принадлежат объекту-контейнеру Form. Этот
объект-контейнер может повторяться в текущем окне несколько раз, но с
различными именами, т.е. такой объект представляет собой потомок объекта Document, наследует его свойства, а кроме того,
может обладать собственными свойствами. Чтобы правильно работал сценарий в
открытом окне, необходимо учитывать, сказанные причины.
Рис. 6. Web-страница для
демонстрации правил записи свойств объекта
Целесообразно рассмотреть программу,
рассматриваемого примера, которая приведена на листинге 5.
Листинг 5.
<HTML>
<HEAD>
<TITLE>Копирование текста-СОБЫТИЕ</TITLE>
</HEAD>
<INPUT TYPE="text" NAME="text1">
<FORM Name="forma">
Введите текст и нажмите
кнопку<BR>
<INPUT TYPE="button"
NAME="knopka" VALUE="Скопировать" OnClick=copyfun()><BR>
<INPUT TYPE="text" NAME="text2"><BR>
</FORM>
<SCRIPT
LANGUAGE="VBScript">
Sub copyfun
dim copytext
copytext=text1.value
forma.text2.value=copytext
End Sub
Sub CL_OnClick
text1.value=""
window.document.forma.text2.value=""
End Sub
</SCRIPT>
<INPUT TYPE="button"
Name="CL" Value="Очистить окна">
</HTML>
Если в текстовое окно с именем Name=”text1” ввести любые
символы с клавиатуры, а затем нажать на кнопку с наименованием «Скопировать»,
то данные из текстового окна будут переданы в текстовое окно с именем Name=”text2”. Процедура,
которая выполняет указанное действие, имеет название copyfun,
начинает работать после щелчка левой клавиши мыши по кнопке с наименованием
«Скопировать». В процедуре copyfun создается
переменная copytext, которой присваивается содержимое
текстового окна, принадлежащего открытому документу, поэтому записана только
пара Объект.Значение. Следующий
оператор позволяет содержимое copytext передать в текстовое
окно, которое принадлежит тэгу FORM. Вот этот
оператор: forma.text2.value=copytext. В операторе
идет ссылка на объект-контейнер FORM (forma – это имя объекта-контейнера), а затем указан
объект с именем text2, у которого
значению (value) передается содержимое переменной copytext. Вторая процедура с именем CL выполняет действие по очищению текстовых окон.
Логика построения оператора заключается в том, что определяется вся иерархия
модели браузера для объекта text2. Так как window
– объект верхнего уровня, представляющий собой само окно браузера, то ясно, что
все подчиненные объекты всегда наследуют его свойства. Следовательно, можно
сделать вывод, что указывать объект window целесообразно
только в тех случаях, когда создается новое окно в браузере, содержащее связи с
родительским. В других случаях, чтобы не загромождать кодами операторы VBScript, ссылка на объект window совсем не обязательна.