Внутренние события
Примечание. Обращаем внимание авторов документов 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" или аналогичные операторы в обработчиках внутренних событий создают новый документ и записывают туда, а не модифицируют текущий документ.