Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Second_magistr / ВЕБ-програм / методичка

.pdf
Скачиваний:
11
Добавлен:
18.08.2019
Размер:
861.66 Кб
Скачать

HTML и VBScript

53

Последняя строка меняет цвет таблицы в зависимости от цвета, выбранного пользователем из списка. Результат работы скрипта показан на рисунке сверху.

ЗАДАНИЕ :

Модифицируйте пример из лабораторной работы номер 6 таким образом, чтобы форма заказа книг в Интернет-магазине учитывала различные способы доставки книги покупателю (самовывоз, курьером, почтой), дальность пересылки (Москва, Московская область, Европейская часть России, Сибирь и Дальний Восток) и способ оплаты (почтовый перевод, сбербанк, Webmoney). Используйте заданный список книг с фиксированной базовой ценой. Различные способы доставки, оплаты и дальности должны динамически формировать окончательную цену заказа.

ЛАБОРАТОРНАЯ РАБОТА № 9

54

Объектная модель Microsoft Internet Explorer

В данной лабораторной работе мы научимся динамически изменять HTML–код Web–страницы. Для этого мы будем использовать методы объекта document, но сначала нужно сказать несколько слов собственно о самой объектной модели Microsoft Internet Explorer. Обычно на нее ссылаются как на MSIE Scripting Object Model.

 

Window

 

Frame

 

Document

Script

Link

History

Anchor

Navigator

Form

Location

Element

 

Данная модель определяет ряд объектов браузера, доступных программированию с помощью языков сценариев, а также их свойства, события и методы. Объектная модель MSIE Scripting Object Model фиксирует иерархию из одиннадцати объектов, устанавливая, таким образом, возможные отношения "контейнер – дочерний объект".

Здесь Window — объект верхнего уровня, связан с самим окном браузера. Объект Frame связывается с фреймом окна. В одном

HTML и VBScript

55

окне может находиться несколько фреймов (это отображено на рисунке жирной линией соединяющей соответствующие объекты). Все фреймы окна объединены в коллекцию Frames. Объект History заключает в себе хронологический список документов открытых в окне-контейнере. Этот объект может быть только один для данного окна (это отображено на рисунке тонкой линией соединяющей объекты History и Window). Объект Navigator содержит информацию о браузере. Location — объект для хранения текущего URL. Script содержит сценарии, определенные в тегах <SCRIPT> данного окна. Однако к данному объекту нельзя обратится из VBS. В каждом окне может быть только один объект Document. Объект Link содержит массив гиперссылок документа. Аналогично объекты Anchor, Form и Element являются массивами якорей, форм и встроенных элементов управления HTML, соответственно. Заметим, что объект Element принадлежит либо объекту Form, либо самому объекту Document, если объект расположен вне объекта Form.

В настоящей лабораторной работе нас интересует, прежде всего, объект Document, его свойства и методы. Отметим особо, что данный объект не поддерживает ни одного события. Обращение к текущему документу строится следующим образом.

Window.Document

или просто

Document

Последняя конструкция используется при условии, что программное обращение происходит из сценария, расположенного в этом же документе. В случае если необходимо обратится к объекту, расположенному в другом фрейме, обращение строится по следующему правилу

Top.Frames(i).Document

Здесь Top — обращение к самому верхнему окну в иерархии.

Все методы объекта Document связаны с процедурой записи в документ или к его созданию во время исполнения скриптов. Они используются для формирования интерактивных Web-страниц, которые изменяются в зависимости от различных условий и дейст-

56

вий пользователя. Используя эти средства, можно также создавать новые странички, не обращаясь при этом к Web-серверу. В частности, можно создать страницу на основе введенных пользователем данных и таким образом проверить их перед отправкой на сервер.

Среди всех методов объекта Document наиболее важным и часто используемым является метод Write. Он добавляет строку к текущему документу во время его загрузки в браузер. Синтаксис метода следующий

Document.Write "строка"

При этом строка записывается без форматирования, "как есть", так что в нее можно включать даже HTML–теги. Например, следующий вызов функции Write

Document.Write "<H1>Строка добавлена динамически</H1><P>"

приводит к записи в текущий документ заголовка и завершает его тегом конца абзаца. При этом документ будет переписан полностью, если вызов метода происходит из процедуры обработчика события элемента управления. Ниже приведен пример "деструктивного кода" который демонстрирует особенности использования метода Write.

<HTML>

<HEAD>

<TITLE>

Динамическое изменение документа

</title>

<SCRIPT language=VBScript> SUB AddText()

Document.Write "<H3>Text1</h3>" Document.Open

Document.Write "<H3>Text2</h3>" Document.Write "<H3>Text3</h3>" Document.Close

Document.Write "<H3>Text4</h3>" END SUB

</script>

</head>

<BODY language=VBScript onClick=ClearDoc()>

HTML и VBScript

57

<CENTER>

<INPUT type=BUTTON name=But value="Перепишем документ" onClick=AddText()>

</center>

<SCRIPT language=VBScript> Document.Write "<H3>Text1</h3>"

</script>

<H2>Другая часть HTML документа</h2>

<SCRIPT language=VBScript> Document.Write "<H3>Text2</h3>"

</script>

</body>

</html>

Методы Open и Close открывают и закрывают документ для записи. При этом HTML-код документа полностью переписывается. В отсутствие метода Open информация должна добавляться к уже отображаемому документу. Вышеприведенный пример показывает, что влияние этих методов более замысловатое и менее продуктивное. В этом можно убедится, закомментировав строки с вызовом методов Open и Close.

Более осмысленное использование обсуждаемого метода приведено в следующем примере. Здесь средствами VBS переписывается страница справа, с учетом данных, введенных пользователем в текстовое поле, расположенное в левом фрейме. Для этого нужно создать документ следующего вида.

<HTML>

<HEAD>

<TITLE>

Созидательное использование метода Write </title>

</head>

<FRAMESET cols=50%,50%>

<FRAME name=Left src="Left.html"> <FRAME name=Right src="Right.html">

</frameset>

</html>

Далее создадим файлы Left.html и Right.html. Первый из них заполним приведенным ниже кодом, а второй оставим пустым.

58

<HTML>

<HEAD>

<SCRIPT language=VBScript> SUB CreateRightDoc()

Top.Right.Document.Open Top.Right.Document.Write "<HTML>" Top.Right.Document.Write "<BODY bgcolor=GREEN>"

Top.Right.Document.Write "<H3>Right Frame Open</h3>" Top.Right.Document.Write "</body>" Top.Right.Document.Write "</html>" Top.Right.Document.Close

END SUB

SUB Output2Right()

strInData=Document.frmForInput.InData.Value

Top.Right.Document.Open Top.Right.Document.Write "<HTML>"

Top.Right.Document.Write "<BODY bgcolor=ORANGE >" Top.Right.Document.Write "<H3>Right Frame Open</h3>" Top.Right.Document.Write "<CENTER><FONT color=LIME

size=5>" & strInData & "</font></center>" Top.Right.Document.Write "</body>" Top.Right.Document.Write "</html>" Top.Right.Document.Close

END SUB </script> </head>

<BODY bgcolor=RED onLoad=CreateRightDoc() language=VBScript onClick=ClearDoc()>

<H3>Left Frame Open</h3>

<FORM name=frmForInput> <CENTER>

<INPUT type=TEXT name=InData size=20> <BR><BR>

<INPUT type=BUTTON name=But value="Выведем в правый фрейм" onClick=Output2Right()>

</center>

</form>

</body>

</html>

На этапе загрузки левого фрейма отрабатывает процедура CreateRightDoc() которая динамически создает документ в правом

HTML и VBScript

59

фрейме, однако при загрузке должен существовать хотя бы пустой файл, связанный с правым фреймом (в нашем случае это файл Right.html). Подчеркнем, что обращение к документу, связанному с правым фреймом, идет через объект Top и имя фрейма ("Right"), содержащего документ.

Сразу после загрузки страничка выглядит так

После ввода текстовой строки и нажатия кнопки увидим следующую картину

ЗАДАНИЕ :

60

Модифицируйте страничку для регистрации участников конференции из работы 7 таким образом, что бы при желании пользователь мог просмотреть английский вариант страницы. Задание необходимо выполнить, используя методы объекта Document. Такой подход позволит изменять "язык" странички даже после отключения от интернета.

УКАЗАНИЕ

Следует использовать документ с несколькими фреймами, в котором управляющий код будет отделен от HTML-кода, переписываемого динамически.

HTML и VBScript

61

Приложение A.

Некоторые функции языка VBScript

Abs

Описание:

Возвращает абсолютную величину числа.

Пример:

'Объявили переменную

Dim MyNum

MyNum = Abs(10.3)

'Возвращает 10.3

MyNum = Abs(-10.3) 'Возвращает 10.3

Chr

Описание:

Возвращает символ по его ANSI коду.

Пример:

Dim MyChar

MyChar = Chr(65) 'Возвращает A. MyChar = Chr(97) 'Возвращает a. MyChar = Chr(62) 'Возвращает >. MyChar = Chr(37) 'Возвращает %.

CStr

Описание:

Возвращает аргумент функции преобразованный к строковому типу (String)

Таблица преобразования для разных типов переменных

Тип аргумента

Возвращаемое значение

Boolean

True или False

Date

Дата в формате, установленном в системе

Null

Ошибка времени исполнения

Empty

Строка нулевой длины (т.е. "")

Число

Строка, содержащая число

62

Пример:

Dim MyDbl, MyStr MyDbl = 431.321

'MyDbl – число типа Double MyStr = CStr(MyDbl)

'MyStr содержит строку "431.321"

Exp/Sqr/Log

Описание:

Возвращает экспоненту/корень квадратный/натуральный логарифм от числа.

Пример:

Dim

MyX, MySinh, Root, MyLog

MyX

= 1.3

 

MySinh

=(Exp(MyX)-Exp(-1*MyX))/2

Root =

Sqr(4)

'Вернет 2

MyLog=Log(Exp(3))

'Вернет 3

Для вычисления логарифма с другим основанием можно задать функцию

Function Log10(X)

Log10 = Log(X)/Log(10) End Function

Int, Fix

Описание:

Возвращает целую часть числа.

Пример:

' Возвращает 91.

MyNum = Int(91.8)

MyNum = Fix(92.2)

' Возвращает 92.

MyNum = Int(-99.9)

' Возвращает -100.

MyNum = Fix(-99.7)

' Возвращает -99.

MyNum = Int(-99.1)

' Возвращает -100.

MyNum = Fix(-99.1)

' Возвращает -99.

Соседние файлы в папке ВЕБ-програм