Использование объектов
Теперь вы знаете, что для включения объектов в HTML-документ нужно использовать пару тегов <OBJECT></OBJECT>, а для установки значений его свойств - тег <PARAM>. Если вы имели дело с программированием на Visual Basic, то использование тегов <PARAM> будет напоминать вам размещение какого-либо компонента или элемента управления на форме. Например, следующие значения тегов <OBJECT> и <PARAM> добавляют на страничку (вместо формы в Visual Basic) элемент ActiveX Label:
<OBJECT classid="clsid:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" id=lblActiveLbl width=250 height=250 align=left hspace=20 vspace=0> <PARAM NAME="Angle" VALUE="90"> <PARAM NAME="Alignment" VALUE="2"> <PARAM NAME="BackStyle" VALUE="0"> <PARAM NAME="Caption" VALUE="A Simple Desultory Label"> <PARAM NAME="FontName" VALUE="Arial"> <PARAM NAME="FontSize" VALUE="20"> <PARAM NAME="FontBold" VALUE="1"> <PARAM NAME="FrColor" VALUE="0"> </OBJECT>
Вы можете присваивать или устанавливать свойства, а также вызывать методы точно так же, как с любым средством управления формой. Следующий текст, например, включает элементы <FORM>, которые могут использоваться для управления свойствами двух элементов Label:
<FORM NAME="LabelControls"> <INPUT TYPE="TEXT" NAME="txtNewText" SIZE=25> <INPUT TYPE="BUTTON" NAME="cmdChangeIt" VALUE="Change Text"> <INPUT TYPE="BUTTON" NAME="cmdRotate" VALUE="Rotate Label"> </FORM>
Обработчик события нажатия кнопки cmdChangeIt изменяет текст объекта Label:
<SCRIPT LANGUAGE="VBScript"> <!- Sub cmdChangeIt_onClick Dim TheForm Set TheForm = Document.LabelControls lblActiveLbl.Caption = TheForm.txtNewText.Value End Sub -> </SCRIPT>
Некоторые теги ( прежде всего для управления вводом информации в форму) и элементы ActiveX могут обращаться к отдельным процедурам вашего сценария (скрипта), запускаемого событием. События могут вызываться из тегов <A>, <BODY>, <INPUT> и <OBJECT>. В примере, который приводится ниже, при нажатии кнопки изменяется текст объекта Label:
<HTML> <HEAD> <TITLE>Использование объектов с событиями</TITLE> </HEAD> <BODY BGCOLOR="slateblue"><BR> <CENTER> <OBJECT ID="MyLabel" WIDTH=215 HEIGHT=93 CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"> <PARAM NAME="_ExtentX" VALUE="5689"> <PARAM NAME="_ExtentY" VALUE="2461"> <PARAM NAME="Caption" VALUE="Watch me change!!"> <PARAM NAME="Angle" VALUE="0"> <PARAM NAME="Alignment" VALUE="4"> <PARAM NAME="BackStyle" VALUE="1"> <PARAM NAME="Mode" VALUE="1"> <PARAM NAME="FillStyle" VALUE="0"> <PARAM NAME="FillStyle" VALUE="1"> <PARAM NAME="ForeColor" VALUE="#00FF00"> <PARAM NAME="BackColor" VALUE="#DDAADD"> <PARAM NAME="FontName" VALUE="Times"> <PARAM NAME="FontSize" VALUE="12"> <PARAM NAME="FontItalic" VALUE="0"> <PARAM NAME="FontBold" VALUE="0"> <PARAM NAME="FontUnderline" VALUE="0"> <PARAM NAME="FontStrikeout" VALUE="0"> <PARAM NAME="TopPoints" VALUE="0"> <PARAM NAME="BotPoints" VALUE="0"> </OBJECT></CENTER><BR><BR><CENTER> <INPUT TYPE="button" value="click ME to change" onclick="changes" Language="VBScript"></CENTER> <SCRIPT> sub changes MyLabel.Caption="See. . . I TOLD YOU!" MyLabel.ForeColor = "6316128" MyLabel.BackColor = "167111680" MyLabel.FontName = "Arial" end sub sub MyLabel_Click MyLabel.Caption="Watch me change!!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" end sub </SCRIPT> </BODY> </HTML>
В этом примере, помимо объекта Label, добавлены некоторые возможности сценария и несколько событий. Во-первых, определяется элемент управления Label, затем с помощью тега <INPUT> добавляется элемент управления Button. Когда пользователь нажимает на кнопку, то текст Label изменяется. При повторном нажатии кнопки возвращается прежний текст. Оба эти действия являются событиями. Когда пользователь нажимает на кнопку, возникает событие, заставляющее метку изменяться. Атрибут OnClick в теге <INPUT> используется для того, чтобы вызвать событие. Сам по себе атрибут OnClick является событием, и его значение вызывает процедуру VBScript, которая заставляет метку изменяться. Прежний текст возвращается с помощью сценария, имеющего две процедуры. Первая используется элементом Button (кнопка), а вторая - Label (метка), если пришло время вернуть ее старое содержание. Как вы заметили, во второй процедуре имя объекта Label (MyLabel) сопровождается подчеркиванием, после которого стоит имя события (MyLabel_Click). Это означает, что когда происходит событие OnClick для названного объекта, то должны выполняться последовательности операций, перечисленные в этой процедуре.
При интенсивном программировании лучше всего использовать программу Microsoft ActiveX Control Pad, великолепно выполняющую связывание команд Visual Basic с разными событиями и элементами управления на вашей страничке. Таким образом, вы можете больше внимания обращать на сам процесс разработки приложения.
Использование подпрограмм и функций
Для применения функций в вашей программе необходимо поставить ее название справа от переменной или выражения, в которое будет возвращаться результат выполнения функции, например:
<SCRIPT LANGUAGE="VBScript"> <!- Temp = Celsius(fDegrees) -> </SCRIPT>
или
<SCRIPT LANGUAGE="VBScript"> <!- MsgBox "The Celsius temperature is " & Celsius(fDegrees) & " degrees." -> </SCRIPT>
Чтобы вызвать одну процедуру из другой, необходимо написать имя первой со значениями требуемых параметров, каждый из которых должен отделяться от предыдущего запятой. Оператор Call не требуется. Но если вы все-таки используете его, то нужно заключить любые параметры в круглые скобки. Следующий пример показывает две возможности вызова процедуры MyProc. Один использует оператор Call, другой - нет. Оба выполняют одно и то же.
<SCRIPT LANGUAGE="VBScript"> <!- Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg -> </SCRIPT>
Обратите внимание, что круглые скобки опускаются при вызове подпрограммы, если оператор Call не применяется.
Объект
Объект (Object) - это простой объект, методами, свойствами и событиями которого вы можете управлять. Метод - это процедура или просто набор команд, сообщающих объекту, что нужно выполнить некоторую задачу. Свойство - это некоторый вид параметра объекта. Событие - это сигнал, подаваемый, если с объектом что-то происходит. И методы, и свойства, и события разработчик выбирает сам, исходя из потребностей задачи. Так, если в вашей программе нужно отследить время окончания работы, то имеет смысл обращать внимание на событие, сигнализирующее об этом. В противном случае эта информация бесполезна.
Объект Document
Объект Document имеет дело прежде всего с телом HTML-страницы. Он имеет три дочерних объекта: Link, Anchor и Form, каждый из которых является индексированным массивом объектов link, anchor и form. Кроме того, объект Form содержит подобъект Element, который является индексированным массивом всех объектов и элементов управления на странице. Некоторые важные свойства и методы перечислены в табл. 4. Для Document, заметим, не существует никаких событий.
Таблица 4.
Некоторые методы объекта Document.
Метод | Назначение |
BgColor | Устанавливает цвет фона текущего документа. Этот цвет может иметь шестнадцатеричное представление #rrggbb или соответствующее название |
FgColor | Устанавливает цвет текста документа. Аналогичен по функциям свойству BgColor |
Referrer | Указывает URL документа, на который ссылается пользователь в настоящее время. Например, если кто-то обратился по адресу: http://www.nm.org/welcome.htm с сервера http://www.someplace.com, то свойством Referrer будет: http://www.someplace.com, если это свойство было в странице вышеупомянутого расположения; в противном случае оно обращается в Null |
LastModified | Показывает дату последней модификации документа |
Open | Открывает документ для записи дополнительных строк в формате HTML. Синтаксис: document.open() |
Write | Записывает HTML-текст в текущий документ и должен вызываться, когда документ открывается для записи. Синтаксис: document.write(somestring), где somestring может быть одной строкой, переменной или же несколькими связанными строками в формате HTML, которые выводятся на экран |
Close | Закрывает документ после того, как имели место следующие вызовы: document.write, document.close. |
Объект Frame
Объект Frame - это индексированный массив из фреймов (кадров) на странице. Первый кадр из списка соответствует кадру в верхнем левом углу браузера. Вы можете использовать данный объект для установки или получения различных URL-адресов разных фреймов, которые находятся на экране браузера. Фреймовый массив очень похож на объект Window, поскольку он использует другие объекты похожим способом. Например, вы можете использовать расположение объекта для получения или установки расположения соответствующего фрейма.
Объект History
Основной целью объекта History является доступ к списку введенных адресов в браузере. Существуют три метода, используемых для навигации по папке History. Наиболее важные методы перечислены в табл. 5. Объект History не генерирует никаких событий.
Таблица 5.
Некоторые методы объекта History.
Метод | Назначение |
Go | Используется для того, чтобы определить, сколько раз браузер должен пролистать вперед историю введенных адресов. Формат вызова: history.go(n), где n - номер файла истории, на который нужно перейти |
Forward | Используется для определения того, сколько раз браузер должен пролистать вперед историю введенных адресов. Формат вызова: history.forward(n), где n - число раз, которые нужно "идти вперед" |
Back | Используется, чтобы определить, сколько раз браузер должен "идти назад" по текущей истории вашего браузера. Формат вызова: history.back(n), где n - число раз, которое браузер должен "идти назад" |
Объект Location
Этот объект необходим для получения информации относительно текущего расположения Internet Explorer. Наиболее важные свойства перечислены в табл. 6. Этот объект не имеет никаких событий или методов.
Таблица 6.
Наиболее важные свойства объекта Location.
Свойство | Назначение |
Href | Используется для получения URL текущего окна или для создания нового URL |
Protocol | Устанавливает тип протокола (FTP или HTTP) текущего документа |
Host | Используется для установки главной части URL текущего документа вместе с номером используемого порта |
Hostname | Используется для установки имени хоста в URL |
Теперь вы имеете представление о объектах, их функционировании, а также их событиях, методах и свойствах. Вы познакомились с тем, как использовать VBScript для вызова процедур, которые основаны на различных событиях, происходящих с объектом. Надеемся, что это поможет вам в дальнейшей работе.
Оглавление
Объектная модель
Рассмотрим объект ActiveX Label (объект и элемент управления для VBScript фактически означают одно и то же). Он состоит из свойств и имеет один метод. Некоторые из его свойств включают заголовок (Caption), цвет фона (BackColor), цвет шрифта (ForeColor), размер (FontSize) и стиль шрифта (FontName). Его методом является About Box, отображающий при вызове окно с информацией об ActiveX. Событием для Label является перемещение указателя мыши над Label. Существует специальный тег <OBJECT> для вставки объектов в HTML-страницу. В его синтаксисе используются два тега: <OBJECT> и <PARAM>. Первый - для определения используемого объекта, а также других главных параметров, связанных с объектом; второй - для установки разных свойств объекта, определенного тегом <OBJECT>, во вложенных тегах <PARAM>. Атрибуты тега <OBJECT> перечислены в табл. 1, а тэга <PARAM> - в табл. 2.
Таблица 1.
Атрибуты тэега <OBJECT>.
Атрибут | Назначение |
ID | Определяет имя объекта в документе |
CLASSID | Класс, к которому принадлежит объект; может быть уникальным универсальным идентификатором или другой группой классов типа Java. Для элементов управления ActiveX - это идентификационный номер класса в системном реестре вашей системы |
DATA | Адрес, откуда объект должен получать данные; может включать данные для определения всех свойств классов |
CODEBASE | Адрес, где находится код объекта |
TYPE | Тип Internet MIME (например: application/x-oleobject будет определять OLE-объект, который должен использоваться как код) |
HEIGHT | Высота границы объекта |
WIDTH | Ширина границы объекта |
Таблица 2.
Атрибуты тега <PARAM>.
Атрибут | Назначение |
NAME | Определяет имя объекта, которое должно использоваться |
VALUE | Определяет значение, которое должно быть присвоено свойству объекта, определенному в NAME |
Теперь посмотрим на исходный текст, приведенный в примере для элемента управления - Label.
<HTML> <HEAD> <TITLE>Пример, демонстрирующий объект ActiveX</TITLE> </HEAD> <BODY BGCOLOR="steelblue"> <OBJECT ID="mylabel" WIDTH="100" HEIGHT="51" CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"> <PARAM NAME="_ExtentX" VALUE="2646"> <PARAM NAME="_ExtentY" VALUE="1349"> <PARAM NAME="Caption" VALUE="This is label 1"> <PARAM NAME="Angle" VALUE="0"> <PARAM NAME="Alignment" VALUE="4"> <PARAM NAME="Mode" VALUE="1"> <PARAM NAME="FillStyle" VALUE="0"> <PARAM NAME="FillStyle" VALUE="0"> <PARAM NAME="ForeColor" VALUE="#000000"> <PARAM NAME="BackColor" VALUE="#C0C0C0"> <PARAM NAME="FontName" VALUE="Arial"> <PARAM NAME="FontSize" VALUE="12"> <PARAM NAME="FontItalic" VALUE="0"> <PARAM NAME="FontBold" VALUE="0"> <PARAM NAME="FontUnderline" VALUE="0"> <PARAM NAME="FontStrikeout" VALUE="0"> <PARAM NAME="TopPoints" VALUE="0"> <PARAM NAME="BotPoints" VALUE="0"> </OBJECT> </BODY> </HTML>
Для тега <OBJECT> определено несколько параметров, которые предоставляют полезную информацию относительно используемого объекта. Сначала определяется имя объекта "mylabel", затем свойства: ширина и высота. Далее элемент управления идентифицируется параметром "CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" точно так, как он обозначается в системном реестре вашей операционной системы. Вложенные тэги <PARAM> содержат свойства объекта Label. Атрибут NAME используется, чтобы определить, какое свойство должно использоваться, а VALUE - для связи значения с этим свойством. Весь этот процесс автоматизирует программа ActiveX Control Pad. В ней есть окно, позволяющее корректировать свойства любого элемента управления (см. статью "Размещение ActiveX на страницах Web", "Мир ПК", # 2/97, с. 51).
Все объекты являются дочерними от
Все объекты являются дочерними от объекта Window. Объект Window содержит несколько методов, свойств и событий. Некоторые из них перечислены в табл. 1 - 3. Объект Window является исходным объектом, так что вам не требуется добавлять его имя к свойствам или дочерним объектам. Например, вместо window.name вы могли бы использовать только name.
Таблица 1.
Свойства объекта Window.
Свойство | Назначение |
Frames | Используется, когда в текущем документе существует набор кадров (фреймов). Это свойство является массивом фреймов на странице |
Location | Определяет местоположение текущего окна |
Name | Имя того окна, чьи свойства определяются |
Parent | Указывает родительский фрейм или окно, чьи свойства определяются на данный момент |
Несколько основных методов объекта Window.
Метод | Назначение |
Open | Открывает или закрывает документ внутри текущего окна или другого определенного окна. У него есть два аргумента: имя файла, который вы хотите открыть, и имя окна, на котором вы хотите его разместить. Например, window.open(filename,windowname), где filename - имя файла, а windowname - имя окна. Для этого метода требуются оба параметра |
Prompt | Определяет всплывающую подсказку. Имеет два параметра: текст подсказки и любой заданный по умолчанию текст, который входит в подсказку. Например: window.prompt(ExpString, DftString), где ExpString - текст подсказки, а DftString - исходный текст в подсказке. Оба параметра необязательны. Если этот метод связан с переменной (как x=prompt("stuff","more stuff")), то эта переменная получит любые данные, которые были введены в подсказку, если не была нажата "отмена" |
Close | Используется для закрытия окна |
Navigate | Переключает окно на другой адрес URL. Например: window.navigate(URL), где URL - имя того URL, на который нужно перейти |
События загрузки объекта Window.
Событие | Назначение |
OnLoad | Вызывается, когда загружается страница, содержащая данное событие. Используется в тэге <BODY> как атрибут при вызове процедуры |
OnUnLoad | Вызывается, когда выгружается страница, содержащая данное событие. Используется в тэге <BODY> как атрибут при вызове процедуры |
Обработка событий
VBScript - событийно-ориентированный язык. Некоторые события, перечисленные в табл. 3, работают со многими элементами управления. Существует несколько методов определения того, что должно происходить в сценарии при возникновении события. Можно определить событие как параметр тега для объекта на странице. Значением этого атрибута должно быть имя процедуры, которую нужно заранее определить внутри тега. Если надо использовать определенную процедуру, то параметр LANGUAGE тега <SCRIPT> (см. табл. 4) должен быть включен в этот тэг как дополнительный атрибут.
Таблица 3.
Некоторые события разных объектов в VBScript.
Событие | Назначение |
OnClick | Пользователь щелкнул мышкой на элементе управления |
MouseOver | Пользователь помещает курсор мыши над объектом |
DblClick | Пользователь дважды щелкнул мышкой на соответствующем объекте |
OnLoad | Происходит при загрузке документа или другого элемента управления |
Таблица 4.
Дополнительные атрибуты тега <SCRIPT>.
Атрибут | Назначение |
EVENT | Декларирует событие (для объекта или элемента управления, определенного с помощью FOR), используемое для вызова кода, вставленного между парой тэгов <SCRIPT> |
FOR | Определяет, для какого объекта или элемента управления на странице должен использоваться скрипт, если происходит событие, указанное в атрибуте EVENT |
LANGUAGE | Назначает используемый скриптовый язык. Значением может быть либо "VBScript" для VBScript, либо "JavaScript" для JavaScript |
EventName | Псевдоним события. Любое событие для определенного элемента управления может использоваться как атрибут одного из четырех тегов: <BODY>, <INPUT>, <OBJECT> и <A>. Значением для этого события всегда является процедура (и в VBScript, и в JavaScript). Некоторые названия событий, которые могут использоваться как атрибуты, перечислены в табл. 3. Этот метод не может работать с некоторыми элементами ActiveX |
Типовая схема описания обработчика события следующая: <...EventName="method" LANGUAGE="VBScript"...>, где EventName - любое правильное событие для соответствующего объекта, а method - это имя процедуры, которая вызывается при возникновении какого-то определенного события. Используя атрибуты, описанные в табл. 4, вы можете определить в теге <SCRIPT>, какое произошло событие и для какого объекта должен использоваться следующий код, что необходимо сделать, если в программе несколько процедур. Это выглядит примерно так:
<SCRIPT LANGUAGE="VBSCRIPT" FOR="ObjectName" EVENT="EventName"> ... </SCRIPT>
FOR определяет имя элемента управления или объекта, для которого используется последующий код; EVENT задает событие, при возникновении которого следующий код будет вызван.
Определение обработчика события через процедуру - самый простой способ выполнения некоторого кода, когда обрабатываемое событие имело место. Этот метод использует процедуру с таким же именем, как у элемента управления, который вы предполагаете использовать, плюс подчеркивание между именами объекта и события:
<SCRIPT LANGUAGE="VBScript"> ... sub ObjectName_ObjectEvent ... end sub ... </SCRIPT>
Следующий фрагмент исходного текста иллюстрирует оба рассмотренных метода. Обработчики события определяются как атрибуты, а также используются как процедуры внутри кода:
... <INPUT TYPE="button" value="click ME to change" onclick="changes" Language="VBScript"></CENTER> <SCRIPT> sub changes MyLabel.Caption="See. . . I TOLD YOU!" MyLabel.ForeColor = "6316128" MyLabel.BackColor = "167111680" MyLabel.FontName = "Arial" end sub ...
... sub MyLabel_Click MyLabel.Caption="Watch me change!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" end sub ...
Процедуры
Процедуры - это относительно самостоятельные фрагменты программы, оформленные особым образом и обозначенные именами. Упоминание этих имен в тексте программы называется вызовами процедур. Процедуры помогают разбить программу на ряд независимых частей, что необходимо для экономии памяти. Каждая процедура существует в программе в единственном экземпляре, но обращаться к ней можно из разных точек программы. При вызове процедуры вступает в действие последовательность операторов, которые находятся внутри этой процедуры. Процедуре могут быть переданы некоторые параметры.
Создание скриптов
Для того чтобы браузер мог различать команды VBScript, нужно все операторы VBScript на HTML-страницах обрамлять тегами <SCRIPT> и </SCRIPT>. Первый из них используется в паре с атрибутом LANGUAGE для определения языка создания сценария. В нашем случае - Visual Basic Script (хотя может быть и JavaScript). Значением для этого языка является "VBScript":
<HTML> <HEAD><TITLE>Пример странички с фрагментом на VBScript</TITLE> <SCRIPT LANGUAGE="VBScript"> <!- Sub Button1_OnClick MsgBox "VBScript - Rulez Forever!" End Sub -></SCRIPT> </HEAD> <BODY> <H3>Обычная первая страничка</H3><HR> <FORM><INPUT NAME="Button1" TYPE="BUTTON" VALUE="Click Here"></FORM> </BODY> </HTML>
Тег <SCRIPT> имеет завершающую часть - </SCRIPT>. Всегда употребляйте их парой! Сценарий в нашем примере помещается в специальные скобки <!-...->, которые в языке HTML обозначают комментарий. Это делается для того, чтобы старые браузеры, которые не умеют работать со скриптовыми языками, случайно не отобразили сценарий на экране. Для них он - просто комментарий.
При разработке приложения на VBScript необходимо знать концепцию этого языка, а также иметь представление о том, как работают объекты, события и процедуры. Это поможет вам в дальнейшем разобраться в функционировании объектной модели Internet Explorer 3.0 и объектов ActiveX. Помните, что объекты и VBScript связаны друг с другом.
Установка свойств для элементов управления и объектов
Установка свойств для разных объектов на странице является одной из простейших задач при программировании на VBScript. Стандартная схема этого действия выглядит так:
<SCRIPT> ... ObjectName.property = value ... </SCRIPT>
Здесь ObjectName - имя вашего объекта, определенное с помощью параметров ID или NAME; property - свойство объекта, называемого ObjectName; value - присваиваемое свойству значение. Пример ниже иллюстрирует, как это делается:
... MyLabel.Caption="Watch me change!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" ...
Свойству Caption (заголовок) присваивается строка "Watch me change!". Затем устанавливаются свойства ForeColor (цвет текста), BackColor (цвет фона) и FontName (стиль шрифта). Так можно устанавливать свойства для любого объекта на странице.
Виды процедур
В VBScript существует два вида процедур: подпрограмма (Sub) и функция (Function). Подпрограмма (Sub) - это последовательность VBScript-операторов, обрамляемая операторами Sub и End Sub. Подпрограммы могут принимать параметры (константы, переменные или выражения, которые передаются при вызове процедуры), но не возвращают значений. Если подпрограмма не содержит параметров, то ее оператор должен включать пустой набор круглых скобок. Следующая подпрограмма использует две функции языка VBScript - InputBox и MsgBox. Она запрашивает у пользователя ввод температуры в градусах Фаренгейта, переводит ее в градусы Цельсия и отображает результат. Вычисление температуры происходит в функции Celsius.
<SCRIPT LANGUAGE="VBScript"> <!- Sub ConvertTemp() temp = InputBox("Please enter the temperature in degrees F.", 1) MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub -></SCRIPT>
Функция (Function) - это последовательность операторов VBScript, обрамляемая операторами Function и End Function. Она похожа на подпрограмму, но отличается от последней тем, что может возвращать некоторое значение. Функция может принимать параметры (константы, переменные или выражения, передаваемые при вызове). Если она не содержит параметров, то оператор Function должен включать пустой набор круглых скобок. Возвращаемый тип у Function - Variant.
В следующем примере функция Celsius переводит градусы Фаренгейта в градусы Цельсия. Когда вызывается функция из подпрограммы ConvertTemp, переменная, содержащая параметр-значение, передается в функцию. Результат вычисления возвращается в вызывающую процедуру и отображается в MsgBox.
<SCRIPT LANGUAGE="VBScript"> <!- Sub ConvertTemp() temp = InputBox("Please enter the temperature in degrees F.", 1) MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub
Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function -> </SCRIPT>
Перед использованием процедур в своей программе вы должны их объявить. Их нужно всегда размещать в самом начале раздела <HEAD> вашей HTML-странички. Весь последующий текст должен также находиться в разделе <HEAD>. Операторы Function и Sub, подобно другим элементам языка VBScript, располагаются между парой тегов <SCRIPT LANGUAGE="VBScript"> </SCRIPT> для правильного их распознавания браузером. Кроме того, теги комментария (<! - и - >) окружают текст программы внутри тега <SCRIPT>, гарантируя, что сценарий не будет отображаться в браузерах, которые не поддерживают VBScript.
Любые данные передаются в ваши процедуры в виде параметров. При создании подпрограммы (или функции) после ее имени должны быть круглые скобки. Любые параметры внутри них отделяются запятыми. В следующем примере параметр fDegrees передает значения в функцию Celsius для преобразования:
<SCRIPT LANGUAGE="VBScript"> <!- Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function -> </SCRIPT>
Используйте функции вместо подпрограмм, если требуется возвратить некоторое значение.
Visual Basic + HTML = VBScript
Visual Basic + HTML = VBScript
Создание скриптов
Процедуры
Виды процедур
Использование подпрограмм и функций
Объект
Объектная модель
Использование объектов
Установка свойств для элементов управления и объектов
Обработка событий
Вызов методов
Объектная модель Internet Explorer 3.0
Объект Document
Объект Frame
Объект History
Объект Location
Данная статья предназначена тем, кто хотел бы получить представление о программировании на Visual Basic Script, подмножестве языка Visual Basic. VBScript позволяет решать задачи, связанные с Internet, а именно создавать сценарии (или скрипты) управления объектами (кнопками, списками, ниспадающими меню и т. д.) на Web-страничках. Для понимания этого материала нужно иметь представление о структуре HTML-документа, а также основах программирования на Visual Basic. Описанные в статье сценарии могут быть использованы в браузере Microsoft Internet Explorer 3.0. Другие браузеры попросту не понимают этого языка. В настоящее время существуют всего два языка создания сценариев по управлению объектами - Microsoft VBScript и Sun JavaScript. Оба поддерживаются IE 3.0. Браузер же компании Netscape воспринимает только JavaScript.
С помощью VBScript вы можете быстро создавать собственные страницы или даже писать игры. И все это размещается внутри вашего HTML-документа. Если вы уже имели дело с Visual Basic или Visual Basic for Applications, то легко справитесь и с VBScript.
Вызов методов
Чтобы вызвать подпрограмму из вашего сценария, используйте следующий синтаксис:
call ProcedureName(arguments)
ProcedureName - это имя подпрограммы, которую вы вызываете; arguments - значения, передающиеся в процедуру. Как было сказано ранее, подпрограммы используются, когда требуется обработать какое-то событие, например:
<SCRIPT> ... sub MyObject_Click() alert "This is a subroutine which is called _ when the Click event happens for the MyObject object." end sub ... </SCRIPT>
В нашем случае это Click, т. е. пользователь должен щелкнуть мышкой на этом объекте. Это не будет работать для функции, потому что функция - это процедура, возвращающая значение. Что касается функций, то они сами могут быть возвращены как значение, например:
<SCRIPT> ... y = 2 x = GiveValue(y) alert x ... function GiveValue(a) GiveValue = a + 4 end function ... </SCRIPT>
Следующий пример иллюстрирует вызовы подпрограммы и функции из сценария:
<HTML> <HEAD> <TITLE>Документ HTML, использующий элементы управления ActiveX и процедуры </TITLE> </HEAD> <BODY BGCOLOR="mistyrose"> <OBJECT ID="IeLabel1" WIDTH=170 HEIGHT=93 CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"> <PARAM NAME="_ExtentX" VALUE="3625"> <PARAM NAME="_ExtentY" VALUE="2461"> <PARAM NAME="Caption" VALUE="Click Me"> <PARAM NAME="Angle" VALUE="0"> <PARAM NAME="Alignment" VALUE="4"> <PARAM NAME="Mode" VALUE="1"> <PARAM NAME="FillStyle" VALUE="0"> <PARAM NAME="FillStyle" VALUE="1"> <PARAM NAME="ForeColor" VALUE="#FF0000"> <PARAM NAME="BackColor" VALUE="#373737"> <PARAM NAME="BackStyle" VALUE="1"> <PARAM NAME="FontName" VALUE="Courier"> <PARAM NAME="FontSize" VALUE="24"> <PARAM NAME="FontItalic" VALUE="0"> <PARAM NAME="FontBold" VALUE="0"> <PARAM NAME="FontUnderline" VALUE="0"> <PARAM NAME="FontStrikeout" VALUE="0"> <PARAM NAME="TopPoints" VALUE="0"> <PARAM NAME="BotPoints" VALUE="0"> </OBJECT><BR CLEAR="ALL"> <INPUT TYPE="button" NAME="button1" VALUE="Get Value"> Enter Angle: <INPUT TYPE="text" NAME="AngleInpt" VALUE="0" SIZE="10" MAXLENGTH="10"> The Sine is: <INPUT TYPE="text" NAME="SineInpt" VALUE="0" SIZE="10" MAXLENGTH="10"> <SCRIPT LANGUAGE="VBScript"> dim pi pi = 4 * atn(1.0) sub button1_OnClick dim angle, sinangle angle = AngleInpt.value sinangle = getsin(angle) SineInpt.value = sinangle end sub function getsin(angle) getsin = sin((pi * angle)/180) end function sub ieLabel1_Click call ieLabel1.AboutBox end sub </SCRIPT> </BODY> </HTML>
Когда пользователь щелкает мышью по метке Label, то вызывается метод About Box. Поля ввода используются для вычисления синуса заданного угла (в градусах). Если ввести некоторое значение в первое поле ввода, помеченное текстом "Enter Angle", и щелкнуть на кнопке мышью, то введенный аргумент будет переведен в радианы и затем вычислен синус, результат чего будет отображен. Первая процедура вызывается по нажатию мышью на единственный объект на странице - кнопку, называемую button1. Когда это событие обрабатывается, то вызывается сразу несколько методов. Сначала обновляются все переменные, которые вы собираетесь использовать для вашей программы. Затем отыскивается значение, называемое AngleInpt, которое пользователь набрал в поле ввода. Далее вызывается функция, в которую заносится введенный параметр из поля AngleInpt. Она преобразует угловые градусы в радианы, затем вычисляет его синус (радианы являются основной мерой измерения углов для тригонометрических функций в VBScript). Значение связывается с именем функции (getsin), которая возвращает его для определенной нами ранее переменной. В итоге это значение отображается в текстовом поле, называемом SineInpt.
В данном примере задействовано два метода: подпрограмма button1_OnClick, которая, если вы помните, вызывается, когда пользователь щелкает мышью по кнопке, и функция getsin(angle), где angle - параметр, используемый для преобразования градусов в радианы. У элемента ActiveX Label используются два включаемых метода (методами называются собственные подпрограммы и функции объекта): тот, который вызывается, когда по метке щелкнули мышкой (ieLabel1_Click), и метод отображения диалоговой панели ieLabel.AboutBox(). Когда обращаются к методам объектов, обычно используют следующий синтаксис:
call ObjectName.MethodName()
Ключевое слово call применяется для вызова определенного метода. ObjectName - это имя объекта, для которого вы хотели бы вызвать метод, а MethodName() - это имя метода, который будет использовать сам объект. Имя объекта и вызываемый метод отделяются точкой. Также для вызова метода не требуется никаких скобок, потому что у него нет никаких параметров.