Обработчики событий: интерфейс EventListener
Поддержка : | | Нестандартная. | | | Соответствует стандарту. |
Интерфейс EventListener соответствует обработчикам событий в DOM. Обработчик событий - это подпрограмма, которая вызывается всякий раз, когда происходит событие, для которого зарегистрирован данный обработчик. Активизация обработчика вызывается внутренним методом handleEvent:
Метод handleEvent
Синтаксис: обработчик.handleEvent(evt) Аргументы: evt - выражение типа Event
Поддержка : | | Нестандартная. | | | Соответствует стандарту. |
Метод handleEvent вызывается в процессе обработки события evt. Пример обработчика события приведен в описании метода addEventListener.
Обработчики событий HTML 4.0
В HTML 4.0 обработчики событий задаются как атрибуты соответствующих элементов, например:
<BODY onclick="mouseClick()">
При таком подходе задание нового обработчика события заменяет его старый обработчик. DOM допускает регистрацию нескольких обработчиков для одного события, поэтому в нем произошел отказ от задания обработчиков в атрибутах. Однако, в целях совместимости все действующие реализации DOM поддерживают форму регистрации обработчиков событий в синтаксисе HTML. Она считается совпадающей с заданием обработчика методом addEventListener с аргументом useCapture, равным false. Например, приведенное выше задание обработчика событий эквивалентно оператору
document.body.addEventListener("click", mouseClick, false);
DOM не предусматривает доступа к контексту события для обработчиков прерываний, заданных через атрибуты элементов. Однако, в Gecko в момент вызова обработчика события создается объект event, соответствующий интерфейсу Event для данного события. Пример:
function checkKey(evt) { var key = evt.which; // код нажатой клавиши ... }
<BODY onkeydown="checkKey(event)">
Перечень событий HTML приведен в этом пункте.
События: интерфейс Event
Поддержка : | | Нестандартная. | | | Соответствует стандарту. |
Интерфейс Event передает обработчику события информацию о событии, которое его активизировало. В зависимости от типа события, его контекстная информация может отличаться, но все интерфейсы, описывающие конкретные события, являются производными от интерфейса Event.
Свойства интерфейса EventСвойство | Изменяемое | Модель | Описание |
---|
bubbles | Нет | DOM 2 | Просачивается ли данное событие. | cancelable | Нет | DOM 2 | Отменяемо ли данное событие. | currentTarget | Нет | DOM 2 | Узел, чьи обработчики событий сейчас активизируются. | eventPhase | Нет | DOM 2 | Текущая фаза обработки события. | target | Нет | DOM 2 | Узел, являющийся целью события. | timeStamp | Нет | DOM 2 | Время генерации события. | type | Нет | DOM 2 | Имя события. |
Методы интерфейса EventМетод | Модель | Описание |
---|
initEvent | DOM 2 | Инициализирует событие. | preventDefault | DOM 2 | Отменяет обработку события по умолчанию. | stopPropagation | DOM 2 | Прекращает дальнейшее распространение события. |
Свойство bubbles
Синтаксис: событие.bubbles Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство bubbles возвращает true, если данное событие является просачивающимся, и false в противном случае.
Свойство cancelable
Синтаксис: событие.cancelable Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство cancelable возвращает true, если данное событие является отменяемым, и false в противном случае.
Свойство currentTarget
Синтаксис: событие.currentTarget Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство currentTarget возвращает объект EventTarget, соответствующий узлу, чьи обработчики событий сейчас активизируются. Это свойство особенно полезно при перехвате и просачивании событий.
Свойство eventPhase
Синтаксис: событие.eventPhase Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство eventPhase возвращает текущую фазу обработки события, которая задается целым числом в соответствии со следующей таблицей:
Название | Значение | Описание |
---|
CAPTURING_PHASE | 1 | Фаза обработки перехвата события. | AT_TARGET | 2 | Фаза активизации перехватчиков события узла. | BUBBLING_PHASE | 3 | Фаза обработки просачивания события. |
Свойство target
Синтаксис: событие.target Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство target возвращает объект EventTarget, соответствующий узлу, для которого это событие было сгенерировано.
Свойство timeStamp
Синтаксис: событие.timeStamp Изменяемое: нет
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Свойство timeStamp возвращает объект DOMTimeStamp, соответствующий времени генерации данного события. Для некоторых операционных систем и типов событий это значение может быть недоступно; в таких случаях данное свойство должно возвращать 0.
Свойство type
Синтаксис: событие.type Изменяемое: нет
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Свойство type возвращает название данного события в формате DOMString. Это название должно быть именем языка XML, не зависящим от регистра, но и MSHTML, и Gecko возвращают название события строчными буквами, например: "click", "keydown", "resize".
Метод initEvent
Синтаксис: узел.initEvent(eventType, canBubble, isCancelable) Аргументы: eventType - выражение типа DOMString canBubble, isCancelable - логические выражения
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Метод initEvent используется для инициализации параметров события, созданного методом createEvent. Он должен вызываться до того, как данное событие будет сгенерировано методом dispatchEvent, и изменяет только те параметры события, которые задаются его аргументами. Аргумент eventType задает название данного события в формате именем языка XML. Аргументы canBubble и isCancelable указывают соответственно, является ли данное событие просачивающимся и отменяемым.
Метод preventDefault
Синтаксис: узел.preventDefault()
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Метод preventDefault сообщает системе, что нужно отменить обработку данного события, принятую по умолчанию. Если событие не является отменяемым, то вызов этого метода игнорируется. Этот метод может быть вызван в любой фазе обработки события.
Метод stopPropagation
Синтаксис: узел.stopPropagation()
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Метод stopPropagation сообщает системе, что нужно прекратить распространение данного события. После его вызова завершается активация обработчиков событий текущего узла, и дальнейшее распространение события не происходит. Этот метод может быть вызван в любой фазе обработки события.
1 2 3 4 5 6 7 8
8 8 8
| |