|
Сценарий клиента - это программа, которая вызывается из
HTML-документа или непосредственно в него вложена и исполняется на
компьютере-клиенте. Сценарии позволяют авторам дополнить их HTML-документы
динамически изменяемыми свойствами и интерактивными возможностями, а
именно:
- Сценарии могут исполняться при загрузке документа и динамически
изменять его содержимое.
- Сценарии могут вызываться для реакции на такие события, как загрузка
или выгрузка документа, движение мыши, нажатие клавиши и т. п.
- Сценарии могут использоваться для обработки данных, вводимых
пользователем в элементы формы. В частности, они позволяют заполнять
поля формы на основе содержимого других полей или контролировать
правильность введенных данных.
- Сценарии могут присоединяться к элементам форм (например, кнопкам)
для создания графического пользовательского интерфейса.
Существуют два типа сценариев, которые могут быть присоединены к
HTML-документу:
- Сценарии, которые исполняются в процессе загрузки документа
обозревателем. Эти сценарии помещаются в элемент SCRIPT.
Для обозревателей, не поддерживающих сценарии, может быть задано
альтернативное содержание элементом NOSCRIPT.
- Сценарии, которые вызываются каждый раз, когда происходит
определенное событие. Эти сценарии связываются с соответствующими
элементами через атрибуты обработки событий.
Синтаксис: <SCRIPT>…</SCRIPT>
Атрибуты: type = тип файла (тип MIME языка сценария)
charset = кодировка (кодировка символов)
src = URI (URI внешнего сценария)
defer = defer (только декларация)Поддержка: Атрибут charset игнорируется (5.0+)
Атрибуты charset и defer игнорируются (4.0+)
Элемент SCRIPT определяет сценарий клиента.
Он может содержаться в элементе HEAD,
а также в любых текстовых и блочных элементах тела документа. Его
содержимым должен быть сценарий на языке программирования, заданном
обязательным атрибутом type согласно приведенной ниже
таблице 1.7.
На практике атрибут type используется редко,
т. к. обозреватели Microscape поддерживают более удобный
нестандартный атрибут language, имеющий то же самое
назначение, но более удобный синтаксис:
Таблица 1.7. Языки программирования
сценариев
| Язык программирования |
type |
language |
| JavaScript (JScript) |
"text/javascript" |
"javascript" |
| PerlScript |
"text/perlscript" |
"perlscript" |
| TCL |
"text/tcl" |
"tcl" |
| VBScript |
"text/vbscript" |
"vbscript" |
Атрибут type может быть опущен, если документ содержит
метаописатель, задающий язык программирования сценариев, принятый по
умолчанию, например <META http-equiv="Content-Script-Type"
content="text/javascript">.
Сценарии подразделяются на вложенные и внешние.
Вложенный сценарий размещается непосредственно внутри элемента
SCRIPT; в этом случае атрибуты src и
charset должны отсутствовать. Пример внутреннего
сценария:
<SCRIPT type="text/javascript">
document.write("<p><b>Hello World!<\/b>")
</SCRIPT>
Внешний сценарий хранится в отдельном файле; в этом случае атрибут
src должен содержать URI этого файла, а атрибут
charset может использоваться для задания его кодировки
символов (обычно это "ISO-8859-1"). Обратите внимание, что в
случае вложенного сценария атрибут charset игнорируется.
Пример внешнего сценария:
<SCRIPT type="text/javascript" src="global/hello.js"></SCRIPT>
Необязательный атрибут defer указывает, что
обозреватель может отложить обработку данного сценария до завершения
загрузки и отображения документа. Такой сценарий не должен модифицировать
содержимое документа и не должен содержать обработчиков событий, которые
могут произойти в процессе загрузки документа.
Старые обозреватели, не поддерживающие сценариев, могут отображать
содержимое элемента SCRIPT как обычный текст документа.
Во избежании этого рекомендуется помещать текст сценария внутрь
HTML-комментария, например:
<SCRIPT type="text/javascript">
<!-- начало сценария
document.write("<p><b>Hello, World!<\/b>");
// конец сценария -->
</SCRIPT>
Обратите внимание, что "-->" содержится в
однострочном комменарии языка JavaScript, начинающемся с
"//". Примеры таких комментариев для других языков
программирования будут приведены ниже.
Синтаксис: <NOSCRIPT>…</NOSCRIPT> (блочный элемент)
Атрибуты: id, class, style, title, lang, dir, события Поддержка: Все атрибуты игнорируются (5.0+)
Все атрибуты игнорируются (4.0+)
Элемент NOSCRIPT определяет альтернативное
содержание на тот случай, когда обозреватель не может исполнить ранее
приведенный сценарий. Точнее говоря, его содержимое должно отображаться
только в следующих случаях:
- если исполнение сценариев отключено пользователем;
- если обозреватель не поддерживает язык программирования, на котором
написан сценарий, предшествующий данному элементу.
Элемент NOSCRIPT может содержать любые блочные
элементы. Он может содержаться в элементах BLOCKQUOTE,
BODY,
BUTTON,
DD,
DEL,
DIV,
FIELDSET,
FORM,
INS,
LI,
MAP,
NOSCRIPT, OBJECT,
TD
и TH.
Вообще говоря, полезность данного элемента невелика, так как сценарии
обычно используются для динамического изменения Веб-страницы, которое
невозможно достичь статическими средствами. Пример:
<SCRIPT type="text/vbscript">
…сценарий на языке VBScript, вставляющий данные в документ…
</SCRIPT>
<NOSCRIPT>
<P>Доступ к <A href="http://someplace.com/data">данным.</A></P>
</NOSCRIPT>
Поддержка сценариев в языке HTML не зависит от языка программирования,
на котором эти сценарии написаны. Выше уже были перечислены названия
наиболее распространенных языков программирования сценариев, и здесь мы
приводим краткую характеристику каждого из них. Важно понимать, что все
сценарные языки являются интерпретируемыми. Это означает, что обозреватель
считывает исходный текст сценария вместе с HTML-документом, а затем
исполняет его без компиляции в промежуточную форму.
JavaScript был разработан Бренданом Эйком (Brendan Eich) в Netscape
Communications как язык сценариев для обозревателей Netscape Navigator,
начиная с версии 2.0. В дальнейшем к развитию этого языка подключилась
корпорация Microsoft, чьи обозреватели Internet Explorer поддерживают
JavaScript, начиная с версии 3.0. Версия Microsoft получила название
JScipt, поскольку JavaScript является зарегистрированной маркой фирмы
Netscape. JavaScript - это единственный язык сценариев, поддержка
которого встроена в наиболее популярные обозреватели, что делает его
стандартом de facto для программирования сценариев. Подробное описание
JavaScript приведено в Части
III.
Пример сценария:
<SCRIPT type="text/javascript">
<!-- начало сценария
document.write("Hello, world!");
// конец сценария -->
</SCRIPT>
Сценарная версия языка PERL, работающая на стороне
клиента под управлением Microsoft Internet Explorer 4.0+ и на стороне
сервера под управлением Microsoft Internet Information Server 3.0+. Для
его использования в Веб-страницах необходимо установить PerlScript на
каждом компьютере-клиенте, поэтому он может применяться только в
интрасетях. Рекомендуется использовать PerlScript в тех случаях, когда Вам
необходима интенсивная обработка символьных выражений. Его последнюю
версию можно бесплатно загрузить с узла http://www.activestate.com/ActivePerl/ .
Пример сценария:
<SCRIPT type="text/perlscript">
<!-- начало сценария
$window->document->write('Hello, world!');
# конец сценария -->
</SCRIPT>
TCL был разработан Джоном Аустерхаутом (John Ousterhout) в конце 80-х.
Часто упоминается как TCL/TK, поскольку обычно используется совместно с
пакетом создания пользовательских интерфейсов TK. Для его использования в
Веб-страницах необходимо установить TCL на каждом компьютере-клиенте,
поэтому он может применяться только в интрасетях. Рекомендуется
использовать TCL в тех случаях, когда Вам необходимо построение сложных
графических пользовательских интерфейсов. Его последнюю версию можно
бесплатно загрузить с узла http://dev.scriptics.com/ .
<SCRIPT type="text/tcl">
<!-- начало сценария
document write("Hello, world!")
# конец сценария -->
</SCRIPT>
Сценарная версия языка Microsoft Visual Basic. Поддерживается только
обозревателем Microsoft Internet Explorer и большинством разработчиков
воспринимается как курьезное порождение ностальгии Билла Гейтса по
программистской юности.
Пример сценария:
<SCRIPT type="text/vbscript">
<!-- начало сценария
Document.Write "Hello, World!"
' конец сценария -->
</SCRIPT>
|