Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в HTML.doc
Скачиваний:
36
Добавлен:
21.03.2016
Размер:
957.44 Кб
Скачать

Установка языка скриптов

Поскольку HTML не соотносится с определённым языком сценариев, авторы документа должны однозначно указать ПА язык каждого скрипта. Это можно сделать, объявив значение по умолчанию или локально.

Язык сценариев по умолчанию

Авторы должны определить язык скриптов по умолчанию для всех скриптов в документе, включив следующее META объявление в HEAD:

<META http-equiv="Content-Script-Type" content="type">

где "type" - это content type/тип содержимого, называющий язык скриптов. Примеры - "text/tcl", "text/javascript", "text/vbscript".

В отсутствие META объявления, значение по умолчанию может быть установлено заголовком "Content-Script-Type" HTTP:

Content-Script-Type: type

где "type" это опять же content type/тип содержимого, называющий язык скриптов.

ПА должны определить язык скрипта по умолчанию в такой последовательности (приоритет от высшего к низшему):

  1. Если есть какое-либо объявление META, определяющее "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.

  2. Иначе, если какой-либо заголовок HTTP определяет "Content-Script-Type", последний определяет в потоке символов язык скриптов по умолчанию.

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

Локальное объявление языка скриптов

Атрибут type должен быть определён для каждого элемента SCRIPT в документе. Значение атрибута type элемента SCRIPT переопределяет язык скриптов по умолчанию для данного элемента.

В этом примере мы объявляем язык скриптов по умолчанию "text/tcl". Мы включаем один SCRIPT в "шапку", чей скрипт находится во внешнем файле и написан на языке "text/vbscript". Мы также включили SCRIPT в тело документа, который сам содержит собственный скрипт, написанный на "text/javascript".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

<TITLE>A document with SCRIPT</TITLE>

<META http-equiv="Content-Script-Type" content="text/tcl">

<SCRIPT type="text/vbscript" src="http://someplace.com/progs/vbcalc">

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT type="text/javascript">

...сценарий JavaScript...

</SCRIPT>

</BODY>

</HTML>

Ссылки на элементы html из скрипта

У каждого языка скриптов есть свой набор соглашений о том, как ссылаться на объекты HTML из скрипта. Эта спецификация не определяет стандартный механизм ссылки на объекты HTML.

В то же время, скрипты должны ссылаться на элемент в соответствии с его установленным именем. Машины скриптов должны соблюдать правило старшинства при идентификации элемента: атрибут name имеет преимущество перед атрибутом id, если оба установлены. Иначе тот или другой могут быть использованы.

Внутренние события

Примечание. Обращаем внимание авторов документов HTML, что изменения вскоре могут появиться в определении внутренних событий (напр., как скрипты ограничены событиями). Исследования в этой сфере проводятся членами W3C Document Object Model Working Group (см. W3C сайт http://www.w3.org/).

Определения атрибутов

onload = script [CT]

Событие onload возникает, когда ПА закончил загрузку окна или всех фрэймов FRAMESET. Этот атрибут может быть использован элементами BODY и FRAMESET.

onunload = script [CT]

Событие onunload возникает, когда ПА удаляет документ из окна или фрэйма. Этот атрибут может быть использован элементами BODY и FRAMESET.

onclick = script [CT]

Событие onclick возникает, когда указательное устройство "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.

ondblclick = script [CT]

Событие ondblclick возникает, когда указательное устройство дважды "щёлкает" на элементе. Этот атрибут может быть использован с большинством элементов.

onmousedown = script [CT]

Событие onmousedown возникает, когда кнопка указательного устройства "нажала" на элемент. Этот атрибут может быть использован с большинством элементов.

onmouseup = script [CT]

Событие onmouseup возникает, когда кнопка указательного устройства отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onmouseover = script [CT]

Событие onmouseover возникает, когда указательное устройство проходит над элементом. Этот атрибут может быть использован с большинством элементов.

onmousemove = script [CT]

Событие onmousemove возникает, когда указательное устройство перемещается в тот момент, когда находится над элементом. Этот атрибут может быть использован с большинством элементов.

onmouseout = script [CT]

Событие onmouseout возникает, когда указательное устройство убирается с элемента. Этот атрибут может быть использован с большинством элементов.

onfocus = script [CT]

Событие onfocus возникает, когда элемент получает фокус от указательного устройства или при навигации табуляцией. Этот атрибут может использоваться в элементах: A, AREA, LABEL, INPUT, SELECT, TEXTAREA и BUTTON.

onblur = script [CT]

Событие onblur возникает, когда элемент теряет фокус от указательного устройства или при навигации табуляцией. Может использоваться с теми же элементами, что и onfocus.

onkeypress = script [CT]

Событие onkeypress возникает, когда клавиша нажата и отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onkeydown = script [CT]

Событие onkeydown event возникает, когда клавиша нажата над элементом. Этот атрибут может быть использован с большинством элементов.

onkeyup = script [CT]

Событие onkeyup возникает, когда клавиша отпущена над элементом. Этот атрибут может быть использован с большинством элементов.

onsubmit = script [CT]

onsubmit возникает при отправке формы. Применяется только к элементу FORM.

onreset = script [CT]

onreset возникает при "очистке" формы. Применяется только к элементу FORM.

onselect = script [CT]

onselect возникает, когда пользователь выделяет какой-либо текст в текстовом поле. Этот атрибут может использоваться в элементах INPUT и TEXTAREA.

onchange = script [CT]

onchange возникает, когда ЭУ теряет фокус ввода и его значение изменилось с момента получения фокуса. Применяется в элементах: INPUT, SELECT и TEXTAREA.

Можно ассоциировать действие с определённым количеством событий, возникающих при взаимодействии пользователя с ПА. Каждое из "внутренних событий", перечисленных выше, имеет значение - скрипт. Скрипт выполняется , как только возникает событие в данном элементе. Синтаксис данных скрипта зависит от языка скрипта.

ЭУ, такие как INPUT, SELECT, BUTTON, TEXTAREA и LABEL, все откликаются на определённые внутренние события. Если эти элементы находятся вне формы, они могут использоваться для расширения возможностей пользовательского интерфейса документа.

К примеру, авторы могут вставить в документ кнопку, которая не отправляет форму, а взаимодействует с сервером при активации.

Следующие примеры показывают некоторые ЭУ и действия пользовательского интерфейса на базе внутренних событий.

Здесь заполнение поля userName является необходимым. Если пользователь переносит фокус с этого поля, событие onblur вызовет функцию JavaScript для того, чтобы удостовериться, что userName содержит приемлемое значение:

<INPUT NAME="userName" onblur="validUserName(this.value)">

Вот пример другого JavaScript:

<INPUT NAME="num"

onchange="if (!checkNum(this.value, 1, 10))

{this.focus();this.select();} else {thanks()}"

VALUE="0">

Пример VBScript-обработчика события для текстового поля:

<INPUT name="edit1" size="50">

<SCRIPT type="text/vbscript">

Sub edit1_changed()

If edit1.value = "abc" Then

button1.enabled = True

Else

button1.enabled = False

End If

End Sub

</SCRIPT>

Пример с использованием Tcl:

<INPUT name="edit1" size="50">

<SCRIPT type="text/tcl">

proc edit1_changed {} {

if {[edit value] == abc} {

button1 enable 1

} else {

button1 enable 0

}

}

edit1 onChange edit1_changed

</SCRIPT>

Пример JavaScript для события, связанного со скриптом. Сначала - простой обработчик щелчка кнопки:

<BUTTON type="button" name="mybutton" value="10">

<SCRIPT type="text/javascript">

function my_onclick() {

. . .

}

document.form.mybutton.onclick = my_onclick

</SCRIPT>

</BUTTON>

Более интересный обработчик окна:

<SCRIPT type="text/javascript">

function my_onload() {

. . .

}

var win = window.open("some/other/URI")

if (win) win.onload = my_onload

</SCRIPT>

В Tcl это выглядит похоже:

<SCRIPT type="text/tcl">

proc my_onload {} {

. . .

}

set win [window open "some/other/URI"]

if {$win != ""} {

$win onload my_onload

}

</SCRIPT>

Учтите, что "document.write" или аналогичные операторы в обработчиках внутренних событий создают новый документ и записывают туда, а не модифицируют текущий документ.