event
и обработчики событий, которые используются с объектами client-side в JavaScript, чтобы вызвать специфические действия. Кроме того, она содержит общую информацию об использовании событий и обработчиков событий.Таблица 9.1 содержит один объект в этой главе.
Таблица 9.1 Связанный с событием объект
Объект | Описание |
---|---|
| Представляет событие JavaScript. Передается каждому обработчику события. |
Таблица 9.2 подводит итог обработчиков событий JavaScript.
Таблица 9.2 События и соответствующие им обработчики событий.
Общая Информация о Событиях
Приложения JavaScript в браузере в значительной степени управляются событиями. События это действия, которые происходят обычно в результате того, что пользователь делает. Например, щелчек по кнопке это событие, как и изменение текстового поля или перемещение мыши поверх ссылки. Чтобы Ваш сценарий реагировал на событие, Вы определяете обработчики событий, типа onChange
и onClick
.
Определение Обработчиков Событий
Если событие применяется к тэгу HTML, то Вы можете определить обработчик события для него. Имя обработчика события это имя события, предваренное "on"
. Например, обработчик события для события focus это onFocus
.
<TAG eventHandler="Код JavaScript">
где TAG
это HTML тэг и eventHandler
это имя обработчика события. Например, предположим, что Вы создали функцию JavaScript с именем compute
. Вы можете заставить браузер выполнить эту функцию, когда пользователь нажимает кнопку, назначая вызов функции обработчику события onClick
кнопки:
<INPUT TYPE="button" VALUE="Вычислить" onClick="compute(this.form)">
Вы можете поместить любые инструкции JavaScript внутри кавычек после onClick
. Эти инструкции выполняются, когда пользователь нажимает кнопку. Если Вы хотите включить больше чем одну инструкцию, разделите инструкции точкой с запятой.
Когда Вы создаете обработчик события, соответствующий объект JavaScript получает свойство с именем обработчика события из строчных букв. (В Navigator 4.0, Вы можете также использовать смешанный регист имени обработчика события для имени свойства.) Это свойство позволяет Вам обращаться к обработчику события объекта. Например, в предшествующем примере, JavaScript создает объект Button
со свойством onclick
, чье значение является "compute(this.form)"
.
Глава 7, "Защита JavaScript," в Руководстве по JavaScript содержит подробную информацию о создании и использовани обработчиков событий.
События в Navigator 4.0
В Navigator 4.0, JavaScript включает объекты event
также как обработчики событий. Каждое событие имеет объект event
, связанный с ним. Объект event
обеспечивает информацию о событиях, такую как тип события и положение курсора во время события. Когда событие происходит, и если обработчик события был записан в дескриптор события, объект event
посылается как параметр обработчику события.
Обычно, объект, на котором событие происходит, обрабатывает событие. Например, когда пользователь нажимает кнопку, это часто обработчик события кнопки, которая обрабатывает событие. Иногда Вы хотите, чтобы объекты Window
или document
обрабатывали некоторые типы событий. Например, Вы хотите, чтобы объект document
обрабатывал все события MouseDown независимо от того, где они происходят в документе. Модель фиксирования событий JavaScript позволяет Вам определить методы, которые фиксируют и обрабатывают события прежде, чем они достигают их предназначенного адресата.
В дополнение к обеспечению объекта event
, Navigator 4.0 позволяет Window
или document
фиксировать и обрабатывать событие прежде, чем оно достигает предназначенного адресата. Чтобы выполнять это объекты Window
, document
и Layer
имеют следующие новые методы:
Например, предположим, что Вы хотите фиксировать все события щелчка, которые происходят в окне. Сначала, Вы должны установить окно, чтобы фиксировать события щелчка:
window.captureEvents(Event.CLICK);
Параметр Window.captureEvents
это свойство объекта event
и указывает тип события, чтобы фиксировать. Чтобы фиксировать несколько событий, аргумент является списком событий, отделяемых вертикальной чертой (|). Например:
window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP)
Затем, Вы должны определить функцию, которая обработает событие. Параметр evnt
это объект event
для события.
function clickHandler(evnt) {
Вы имеете четыре параметра для обработки события:
//Что находится здесь зависит от того, как Вы хотите обрабатывать событие.
//Это описано ниже.
}
function clickHandler(evnt) { return true; }
function clickHandler(evnt) { return false; }
routeEvent
. JavaScript ищет другие обработчики событий для события. Если другой объект пытается фиксировать событие (типа документа), JavaScript вызывает обработчик события. Если никакой другой объект не пытается фиксировать событие, JavaScript ищет обработчик события для первоначального адресата события (типа кнопки). Метод routeEvent
возвращает значение, возвращенное обработчиком события. Фиксирующий объект может рассматривать это возвращаемое значение и решать, что делать.function clickHandler(evnt) {
Обратите внимание: Когда
var retval = routeEvent(evnt);
if (retval == false) return false;
else return true;
}routeEvent
вызывает обработчик события, обработчик события активизируется. Если routeEvent
вызывает обработчик события, чья функция должна отобразить новую страницу, действие происходит без возврата фиксирующему объекту.
handleEvent
получателя события. Любой объект, который может регистрировать обработчики событий это получатель события. Этот метод явно вызывает обработчик события получателя события, и обходит иерархию фиксации. Например, если Вы хотите, чтобы все события щелчка шли к первой ссылке на странице, Вы могли бы использовать:function clickHandler(evnt) {
Пока ссылка имеет обработчик
window.document.links[0].handleEvent(evnt);
}onClick
, ссылка обрабатывает любое событие щелчка, которое она получает.
window.onClick = clickHandler;
Важно
Если окно с кадрами хочет фиксировать события в страницах, загруженных из различных мест, Вы должны использовать captureEvents
в подписанном сценарии и вызвать Window.enableExternalCapture
.
В следующем примере, окно и документ фиксируют и отпускают события:
<HTML>
<SCRIPT>function fun1(evnt) {
alert ("Окно получило событие типа: " + evnt.type +
" и будет вызвана routeEvent.");
window.routeEvent(evnt);
alert ("Окно возвратилось из routeEvent.");
return true;
}function fun2(evnt) {
alert ("Документ получил событие типа: " + evnt.type);
return false;
}function setWindowCapture() {
window.captureEvents(Event.CLICK);
}function releaseWindowCapture() {
window.releaseEvents(Event.CLICK);
}function setDocCapture() {
document.captureEvents(Event.CLICK);
}function releaseDocCapture() {
document.releaseEvents(Event.CLICK);}
window.onclick=fun1;
document.onclick=fun2;</SCRIPT>
...
</HTML>
Последняя Модификация: 10/31/97 16:34:02
Все мессаги сюда:yanich@inbox.ru |