JavaScript. Подробное руководство, 6-е издание, стр. 483

В стандартной модели событий для различных типов событий определены различные типы объектов событий, связанных с ними: по событиям мыши, например, обработчикам передается объект

<b>MouseEvent</b>
со свойствами, имеющими отношение к мыши, а по событиям клавиатуры передается объект
<b>KeyEvent</b>
со свойствами, имеющими отношение к клавиатуре. Оба типа,
<b>MouseEvent</b>
и
<b>KeyEvent</b>
, наследуют общий суперкласс
<b>Event</b>
. Однако в моделях событий IE и jQuery по всем событиям, возникающим в объектах
<b>Element</b>
, передаются объекты единого типа Event. Свойства объекта Event, имеющие отношение к клавиатуре, не будут иметь сколько-нибудь осмысленные значения в обработчике события мыши, но сами свойства будут определены в объекте. Для простоты в этой справочной статье не рассматривается иерархия событий и описываются свойства всех событий, которые могут получить объекты
<b>Element</b>
(и затем всплыть до объектов
<b>Document</b>
и
<b>Window</b>
).

Первоначально практически все события в клиентских сценариях генерировались в элементах документа, поэтому такое смешивание свойств, имеющих отношение к документу, в одном объекте выглядит вполне естественным. Однако HTML5 и связанные с ним стандарты определяют множество новых типов событий, которые генерируются в объектах, не являющихся элементами документа. Для этих типов событий часто определяются собственные объекты событий, и этим объектам посвящены собственные справочные статьи. См. статьи

<b>BeforeUnloadEvent, CloseEvent, ErrorEvent, HashChangeEvent, MessageEvent, PageTransitionEvent, PopStateEvent, ProgressEvent</b>
и
<b>StorageEvent</b>
. Большинство из этих типов объектов событий расширяют тип
<b>Event</b>
. Для других новых типов событий, появившихся в стандарте HTML5, их отдельные типы объектов событий не определяются - обработчикам этих событий передается обычный объект
<b>Event</b>
. Данная справочная статья описывает этот «обычный» объект
<b>Event</b>
, плюс некоторые из его подтипов. Свойства в списке ниже, помеченные звездочкой, определяются непосредственно типом
<b>Event</b>
. Эти свойства наследуются такими объектами событий, как
<b>MessageEvent</b>
, и используются при работе с простыми событиями, такими как событие «load» объекта
<b>Window</b>
и событие «playing» объекта
<b>MediaElement</b>
.

Константы

Следующие константы определяют значения свойства

<b>eventPhase</b>
. Это свойство и эти константы не поддерживаются моделью событий, реализованной в ІE.

<b>unsigned short CAPTURING.PHASE = 1</b>

Событие посылается перехватывающим обработчикам событий в предках целевого объекта.

<b>unsigned short ATTARGET = 2</b>

Событие посылается обработчикам целевого объекта

<b>unsigned short BUBBLING.PHASE = З</b>

Событие всплывает и посылается обработчикам событий в предках целевого объекта.

Свойства

Следующие свойства определяются стандартной моделью для объекта

<b>Event</b>
событий, а также для объектов событий, связанных с событиями мыши и клавиатуры. В этот список также включены свойства, определяемые моделями событий ІE и jQuery. Свойства, помеченные звездочкой, определены непосредственно в объекте
<b>Event</b>
и доступны в любых стандартных объектах событий, независимо от типов событий, с которыми они связаны.

<b>readonly boolean altKey</b>

Указывает, удерживалась ли нажатой клавиша Alt в момент события. Определено для событий мыши и клавиатуры, а также в модели событий IE.

<b>readonly boolean bubbles*</b>

Значение true, если тип события поддерживает «всплытие» (и если не вызван метод

<b>stopPropagation()</b>
), и false - в противном случае. Отсутствует в модели событий IE.

<b>readonly unsigned short button</b>

Указывает, изменение состояния какой кнопки мыши вызвало событие «mousedown», «mouseup» или «click». Значение 0 соответствует левой кнопке, значение 2 -правой и значение 1 - средней кнопке мыши. Обратите внимание, что значение этого свойства определено только для событий, связанных с изменением состояния кнопки мыши - оно не используется, например, чтобы сообщить, какая кнопка удерживалась при возникновении события «mousemove». Кроме того, это свойство не является битовой маской: оно не позволяет сообщить обработчику об изменении состояния более чем одной кнопки. Наконец, некоторые броузеры генерируют события только для левой кнопки.

Модель событий IE определяет несовместимое свойство

<b>button</b>
. В этом броузере данное свойство является битовой маской: бит 1 устанавливается, когда была нажата левая кнопка, бит 2 - когда была нажата правая кнопка и бит 4 - когда была нажата средняя кнопка (трехкнопочной) мыши. Библиотека jQuery не имитирует стандартное свойство
<b>button</b>
в IE, вместо этого она реализует свойство
<b>which</b>
.

<b>readonly boolean cancelable*</b>

Значение true, если действие, предлагаемое по умолчанию и связанное с событием, может быть отменено с помощью метода

<b>preventDefault(),</b>
и false - в противном случае. Определено во всех стандартных объектах событий и отсутствует в модели событий IE.

<b>boolean cancelBubble</b>

В модели событий IE, чтобы в обработчике события остановить дальнейшее распространение события вверх по дереву вмещающих объектов, в это свойство нужно записать значение true. В стандартной модели событий для этой цели следует использовать метод

<b>stopPropagation().</b>

<b>readonly integer charCode</b>

Для событий «keypress» это свойство содержит код Юникода сгенерированного печатного символа. Данное свойство равно нулю в случае нажатия функциональной клавиши. Оно не используется событиями «keydown» и «кеуир». Преобразовать это число в строку можно с помощью метода

<b>String.fromCharCode().</b>
Для событий «keypress» то же самое значение большинство броузеров записывают в свойство
<b>keyCode</b>
. Однако в Firefox свойство
<b>keyCode</b>
не определено для события «keypress», поэтому следует использовать свойство
<b>charCode</b>
. Данное свойство является нестандартным, отсутствует в модели событий IE и не имитируется в модели событий jQuery.