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

Глава 4.11. Обработка событий в dom

4.11.1. Основные понятия

4.11.1.1. Генерация и распространение событий

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

Аппаратные события пользовательского интерфейса. Это события, вызванные взаимодействием пользователя с устройствами ввода-вывода (нажатие клавиши, движение мыши и т. п.)

Логические события пользовательского интерфейса. Это события, не связанные с внешними устройствами, например, получение от операционной системы сообщения о смене фокуса.

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

Модель событий DOM 2 пока реализована только в Gecko. Internet Explorer имеет свою модель генерации и обработки событий, которая описана в гл. 4.12.

О различиях в обработке событий этими обозревателями см. WDH+: Прерывание скрипта.

Любое событие связано с конкретным узлом документа (цель события), доступным через интерфейсEventTarget, который указывается в свойствеtargetобъектаEvent, описывающего данное событие. Когда событие достигает своей цели, активизируются всеобработчики событийданного узла, описываемые интерфейсомEventListener. При этом гарантируется, что все обработчики будут активизированы, но не оговаривается порядок, в котором это будет происходить. Если не произойдет перехвата или просачивания события, то процесс генерации события завершится, когда все обработчики будут активизированы. Этот процесс называетсяраспространением события(event propagation). Если происходит перехват события или его просачивание, то процесс обработки события изменяется, как описано ниже.

Исключения, возникающие в процессе обработки события, не прекращают его распространения: управление просто передается следующему обработчику событий. Если обработка события генерирует новые события, то они должны обрабатываться синхронно.

4.11.1.2. Перехват события

Перехват события(event capture) состоит в следующем. Обработчик события любого предка цели может перехватить событие прежде, чем оно достигнет своей цели. Процесс перехвата действует сверху вниз от корня дерева документа, т. е. от объектаDocument. В момент генерации события фиксируется цепочка его существующих обработчиков от корня дерева до узла-цели; если во время обработки события какие-то обработчики будут удалены или добавлены, то это не окажет влияния на процесс обработки данного события.

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

Если перехватывающий обработчик хочет прекратить дальнейшую обработку события, то он должен вызвать метод stopPropagationобъектаEvent. Тем самым он прекратит передачу события по цепочке узлов вниз. Однако, обработчики событий в узлах того же уровня иерархии все равно будут активизированы.

4.11.1.3. Просачивание события

Просачивание события(event bubbling) — это процесс, который происходит в направлении, противоположном перехвату. Он состоит в том, что после активизации обработчиков события узла-цели происходит активизация обработчиков этого события у элементов, являющихся предками этого узла вверх по дереву документа вплоть до его корня. Обработчики событий, зарегистрированные для перехвата событий, при этом не активизируются. В момент генерации события фиксируется цепочка его существующих обработчиков от узла-цели до корня дерева; если во время обработки события какие-то обработчики будут удалены или добавлены, то это не окажет влияния на процесс просачивания данного события.

Любой обработчик может прекратить дальнейшее просачивание события вызовом метода stopPropagationобъектаEvent. Тем самым он прекратит передачу события по цепочке узлов вверх. Однако, обработчики событий в этом узле будут активизированы.

Является событие просачивающимся или нет, определяется свойством bubblesего интерфейсаEvent.

4.11.1.4. Отмена события

Некоторые события являются отменяемыми(cancelable). Для таких событий обычно предусмотрена типовая обработка. Примером может служить щелчок мышью на гиперссылке, где действием по умолчанию является загрузка ресурса, на который указывает гиперссылка. Перед выполнением типовой обработки реализация DOM должна вызвать обработчики данного события, если таковые зарегистрированы. Обработчики имеют возможность либо отменить типовую обработку события, либо разрешить ее. В примере с гиперссылкой отмена события означает, что загрузка ресурса не произойдет.

Является событие отменяемым или нет, определяется свойством cancelableего интерфейсаEvent. Отмена типовой обработки события производится вызовом методаpreventDefaultэтого интерфейса.

4.11.1.5. Исключения: интерфейс EventException

В процессе обработки события может быть сгенерировано исключение, описываемое интерфейсом EventException. Этот интерфейс имеет единственное свойствоcodeтипаNumber, которое содержит номер исключения согласно следующей таблицы:

Название

Значение

Описание

Модель

UNSPECIFIED_EVENT_TYPE_ERR

0

Тип события не задан или пуст.

DOM 2

4.11.2. Регистрация обработчиков событий: интерфейс EventTarget

Поддержка: Не поддерживается.

Соответствует стандарту.

Интерфейс EventTargetреализуется всеми узлами документа, которые поддерживают обработку событий. Иными словами, его методы являются дополнительными методами объектовNode.

Методы интерфейса EventTarget

Метод

Модель

Описание

addEventListener

DOM 2

Регистрирует обработчик события.

dispatchEvent

DOM 2

Генерирует заданное событие.

removeEventListener

DOM 2

Удаляет обработчик события.

Метод addEventListener

Синтаксис: узел.addEventListener(type, listener, useCapture)

Аргументы: type — выражение типаDOMString

listener — выражение типа EventListener

useCapture — логическое выражение

Поддержка: Не поддерживается.

Соответствует стандарту.

Метод addEventListenerрегистрирует новый обработчикlistenerсобытияtypeдля данного узла. Если аргументuseCaptureравенtrue, то этот обработчик будетперехватывать событиеtype. Если новый обработчик регистрируется во время обработки события, то он будет активизироваться только следующими событиями. Повторная регистрация уже существующего обработчика для данного события игнорируется. Следующий пример перехватывает все щелчки мыши на Веб-странице и выводит тег HTML-элемента, на котором мы щелкнули.

function mouseClick(event) {

var tag = event.target.tagName ? event.target.tagName :

event.target.parentNode.tagName;

alert(tag);

}

document.addEventListener("click", mouseClick, true);

Если узел копируется методом cloneNode, то зарегистрированные для него обработчики событий не присоединяются к копии. При необходимости они должны быть вновь зарегистрированы для нового узла.

Метод dispatchEvent

Синтаксис:узел.dispatchEvent(evt)

Аргументы: evt — выражение типаEvent

Исключения: UNSPECIFIED_EVENT_TYPE_ERR

Поддержка: Не поддерживается.

Соответствует стандарту.

Метод dispatchEventгенерирует событиеevt. Обработка события, созданного этим методом, происходит так же, как обработка событий, сгенерированных исполняющей системой. Целью события является узел, из которого вызван данный метод. Пример:

var evt = new Event;

evt.initEvent("click", true, true);

document.body.dispatchEvent(evt);

Метод removeEventListener

Синтаксис: узел.removeEventListener(type, listener, useCapture)

Аргументы: type — выражение типаDOMString

listener — выражение типа EventListener

useCapture — логическое выражение

Поддержка: Не поддерживается.

Соответствует стандарту.

Метод removeEventListenerудаляет обработчик события для данного узла. Аргументыlistener,typeиuseCaptureимеют тот же смысл, что в методеaddEventListener. Если обработчик удаляется во время обработки события, то он уже не будет активизирован текущим событием. Попытка удалить обработчик с параметрами, не соответствующими ни одному из зарегистрированных обработчиков игнорируется. Пример:

document.removeEventListener("click", mouseClick, true);

4.11.3. Обработчики событий: интерфейс EventListener

Поддержка: Нестандартная.

Соответствует стандарту.

Интерфейс EventListenerсоответствует обработчикам событий в DOM. Обработчик событий — это подпрограмма, которая вызывается всякий раз, когда происходит событие, для которого зарегистрирован данный обработчик. Активизация обработчика вызывается внутренним методомhandleEvent:

Метод handleEvent

Синтаксис:обработчик.handleEvent(evt)

Аргументы: evt — выражение типаEvent

Поддержка: Нестандартная.

Соответствует стандарту.

Метод handleEventвызывается в процессе обработки событияevt. Пример обработчика события приведен в описании методаaddEventListener.

4.11.4. Обработчики событий 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 приведен в п. 4.11.10.

4.11.5. События: интерфейс 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задает название данного события в форматеDOMString; это название должно бытьименем языка XML. АргументыcanBubbleиisCancelableуказывают соответственно, является ли данное событиепросачивающимсяиотменяемым.

Метод preventDefault

Синтаксис:узел.preventDefault()

Поддержка: Не поддерживается.

Соответствует стандарту.

Метод preventDefaultсообщает системе, что нужно отменить обработку данного события, принятую по умолчанию. Если событие не являетсяотменяемым, то вызов этого метода игнорируется. Этот метод может быть вызван в любой фазе обработки события.

Метод stopPropagation

Синтаксис: узел.stopPropagation()

Поддержка: Не поддерживается.

Соответствует стандарту.

Метод stopPropagationсообщает системе, что нужно прекратить распространение данного события. После его вызова завершается активация обработчиков событий текущего узла, и дальнейшее распространение события не происходит. Этот метод может быть вызван в любой фазе обработки события.

4.11.6. События пользовательского интерфейса: интерфейс UIEvent

Поддержка: Не поддерживается.

Соответствует стандарту.

Интерфейс UIEventявляется производным от интерфейсаEventи содержит дополнительную информацию о событиях пользовательского интерфейса.

Свойства интерфейса UIEvent

Свойство

Изменяемое

Модель

Описание

detail

Нет

DOM 2

Дополнительные сведения о событии.

view

Нет

DOM 2

Окно отображения документа.

Методы интерфейса UIEvent

Метод

Модель

Описание

initUIEvent

DOM 2

Инициализирует событие.

Свойство detail

Синтаксис:событие.detail

Изменяемое: нет

Поддержка: Не поддерживается.

Соответствует стандарту.

Свойство detailвозвращает число, содержащее дополнительные сведения о данном событии. Его значение зависит от типа события, как описано ниже.

Свойство view

Синтаксис:событие.view

Изменяемое: нет

Поддержка: Не поддерживается.

Соответствует стандарту.

Свойство viewвозвращает указатель на объектAbstractView, соответствующий окну отображения документа, в котором сгенерировано данное событие.

Метод initUIEvent

Синтаксис: узел.initUIEvent(eventType, canBubble, isCancelable, view, detail)

Аргументы: eventType — выражение типа DOMString

canBubble, isCancelable — логические выражения

view — выражение типа AbstractView

detail — числовое выражение

Поддержка: Не поддерживается.

Не поддерживается.

Метод initUIEventиспользуется для инициализации параметров события пользовательского интерфейса, созданного методомcreateEvent. Он должен вызываться до того, как данное событие будет сгенерировано методомdispatchEvent, и изменяет только те параметры события, которые задаются его аргументами. АргументeventTypeзадает название данного события в форматеDOMString; это название должно бытьименем языка XML. АргументыcanBubbleиisCancelableуказывают соответственно, является ли данное событиепросачивающимсяиотменяемым. Аргументviewзадает окно отображения документа, а аргументdetail— дополнительные сведения о событии.

Типы событий пользовательского интерфейса

DOM 2 определяет три типа событий пользовательского интерфейса (которые пока обозревателями не поддерживаются):

DOMFocusIn

Это событие генерируется, когда объект получает фокус (например, при наведении на него курсора мыши или при попадании на него последовательными нажатиями клавиши Tab). Оно аналогично событию focusв HTML, но применимо к любым объектам, способным получать фокус, а не только к управляющим элементам форм.

bubbles: true;

cancelable: false;

контекст: нет.

DOMFocusOut

Это событие генерируется, когда объект теряет фокус (например, при удалении с него курсора мыши или при уходе с него нажатием клавиши Tab). Оно аналогично событию blurв HTML, но применимо к любым объектам, способным получать фокус, а не только к управляющим элементам форм.

bubbles: true;

cancelable: false;

контекст: нет.

DOMActivate

Это событие генерируется при активизации элемента (например, щелчком мыши или нажатием клавиши). Способ активизации указывается в свойстве detail: 1 означает обычную активизацию (одинарный щелчок мыши или нажатие клавиши Enter), 2 означает гиперактивизацию (двойной щелчок мыши или нажатие Shift+Enter).

bubbles: true;

cancelable: true;

контекст: detail.

4.11.7. События мыши: интерфейс MouseEvent

Поддержка: Не поддерживается.

Соответствует стандарту.

Интерфейс MouseEventявляется производным от интерфейсаUIEventи содержит дополнительную информацию о событиях, генерируемых мышью.

Свойства интерфейса MouseEvent

Свойство

Изменяемое

Модель

Описание

altKey

Нет

DOM 2

Состояние клавиши Alt.

button

Нет

DOM 2

Номер кнопки мыши, изменившей состояние.

clientX

Нет

DOM 2

Горизонтальная координата события в клиентской области.

clientY

Нет

DOM 2

Вертикальная координата события в клиентской области.

ctrlKey

Нет

DOM 2

Состояние клавиши Ctrl.

metaKey

Нет

DOM 2

Состояние клавиши Meta.

relatedTarget

Нет

DOM 2

Вторичная цель события.

screenX

Нет

DOM 2

Горизонтальная координата события на экране.

screenY

Нет

DOM 2

Вертикальная координата события на экране.

shiftKey

Нет

DOM 2

Состояние клавиши Shift.

Методы интерфейса MouseEvent

Метод

Модель

Описание

initMouseEvent

DOM 2

Инициализирует событие.

Свойство altKey

Синтаксис:событие.altKey

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство altKeyвозвращаетtrue, если в момент генерации события была нажата клавиша Alt, иfalseв противном случае.

Свойство button

Синтаксис:событие.button

Изменяемое: нет

Поддержка: Нестандартная.

Соответствует стандарту.

Свойство buttonвозвращает номер кнопки мыши, нажатие или отпускание которой вызвало генерацию события. При этом 0 означает левую кнопку, 1 — среднюю кнопку, 2 — правую кнопку. Если мышь сконфигурирована для левой руки, то значения этого свойства присваиваются в обратном порядке.

Свойство clientX

Синтаксис:событие.clientX

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство clientXвозвращает число, равное горизонтальной координате точки, в которой произошла генерация события, относительно клиентской области обозревателя.

Свойство clientY

Синтаксис:событие.clientY

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство clientYвозвращает число, равное вертикальной координате точки, в которой произошла генерация события, относительно клиентской области обозревателя.

Свойство ctrlKey

Синтаксис:событие.ctrlKey

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство ctrlKeyвозвращаетtrue, если в момент генерации события была нажата клавиша Ctrl, иfalseв противном случае.

Свойство metaKey

Синтаксис:событие.metaKey

Изменяемое: нет

Поддержка: Не поддерживается.

Соответствует стандарту.

Свойство metaKeyвозвращаетtrue, если в момент генерации события была нажата клавиша Meta, иfalseв противном случае.

Свойство relatedTarget

Синтаксис:событие.relatedTarget

Изменяемое: нет

Поддержка: Не поддерживается.

Соответствует стандарту.

Свойство relatedTargetвозвращает вторичный объектEventTarget, связанный с данным событием. В настоящее время этот атрибут используется в событииmouseoverдля указания узла, который курсор мыши покинул, и в событииmouseoutдля указания узла, на который курсор мыши попал.

Свойство screenX

Синтаксис:событие.screenX

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство screenXвозвращает число, равное горизонтальной координате точки, в которой произошла генерация события, относительно экрана.

Свойство screenY

Синтаксис:событие.screenY

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство screenYвозвращает число, равное вертикальной координате точки, в которой произошла генерация события, относительно экрана.

Свойство shiftKey

Синтаксис:событие.shiftKey

Изменяемое: нет

Поддержка: Соответствует стандарту.

Соответствует стандарту.

Свойство shiftKeyвозвращаетtrue, если в момент генерации события была нажата клавиша Shift, иfalseв противном случае.

Метод initMouseEvent

Синтаксис: узел.initMouseEvent(eventType, canBubble, isCancelable, view, detail,

screenX, screenY, clientX, clientY, ctrlKey, altKey,

shiftKey, metaKey, button, relatedTarget)

Аргументы: eventType — выражение типа DOMString

canBubble, isCancelable — логические выражения

view — выражение типа AbstractView

detail, screenX, screenY, clientX, clientY, button — числовые выражения

ctrlKey, altKey, shiftKey, metaKey — логические выражения

relatedTarget — выражение типа EventTarget

Поддержка: Не поддерживается.

Не поддерживается.

Метод initMouseEventиспользуется для инициализации параметров события мыши, созданного методомcreateEvent. Он должен вызываться до того, как данное событие будет сгенерировано методомdispatchEvent, и изменяет только те параметры события, которые задаются его аргументами. АргументeventTypeзадает название данного события в форматеDOMString; это название должно бытьименем языка XML. АргументыcanBubbleиisCancelableуказывают соответственно, является ли данное событиепросачивающимсяиотменяемым. Аргументviewзадает окно отображения документа, аргументdetail— количество щелчков мыши, а остальные аргументы задают значения одноименных свойств события.

Типы событий мыши

DOM 2 определяет следующие типы событий мыши:

click

Это событие генерируется при щелчке мышью на элементе. Щелчок определяется как нажатие и отпускание кнопки мыши на одной и той же точке экрана. Соответствующая последовательность генерируемых событий: mousedown,mouseup,click. При двойном или множественном щелчке в одной точке количество щелчков заносится в свойство событияdetail. Это событие применимо к большинству элементов.

bubbles: true;

cancelable: true;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey, button, detail.

mousedown

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

bubbles: true;

cancelable: true;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey, button, detail.

mouseup

Это событие генерируется при отпускании кнопки мыши на элементе. Это событие применимо к большинству элементов.

bubbles: true;

cancelable: true;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey, button, detail.

mouseover

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

bubbles: true;

cancelable: true;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey, relatedTarget (элемент, который курсор мыши покинул).

mouseout

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

bubbles: true;

cancelable: true;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey, relatedTarget (элемент, на который курсор мыши попал).

mousemove

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

bubbles: true;

cancelable: false;

контекст: screenX, screenY, clientX, clientY, altKey, ctrlKey, shiftKey, metaKey.

4.11.8. События клавиатуры: интерфейс KeyEvent

Поддержка: Нестандартная.

Нестандартная.

Интерфейс KeyEventявляется производным от интерфейсаUIEventи содержит дополнительную информацию о событиях, генерируемых клавиатурой. DOM 2 не содержит спецификации этого интерфейса, она будет включена в DOM 3. Поэтому здесь мы приводим описание реализации интерфейсаKeyEventв Gecko (см."Key Events in SeaMonkey").

Свойства интерфейса KeyEvent

Свойство

Изменяемое

Модель

Описание

altKey

Нет

DOM 2

Состояние клавиши Alt.

charCode

Нет

DOM 2

Код Unicode клавиши.

ctrlKey

Нет

DOM 2

Состояние клавиши Ctrl.

keyCode

Нет

DOM 2

Виртуальный код клавиши.

metaKey

Нет

DOM 2

Состояние клавиши Meta.

shiftKey

Нет

DOM 2

Состояние клавиши Shift.

Свойство charCode

Синтаксис:событие.charCode

Изменяемое: нет

Поддержка: Не поддерживается.

Соответствует стандарту.

Свойство charCodeдействительно только для событияkeypress. Если нажатая клавиша соответствует символу Unicode, то данное свойство возвращает код этого символа. Если же клавиша является служебной или событие отлично отkeypress, то возвращается 0.

Свойство keyCode

Синтаксис:событие.keyCode

Изменяемое: нет

Поддержка: Нестандартная.

Соответствует стандарту.

Свойство keyCodeвозвращает виртуальный код клавищи, вызвавшей событие, или 0, еслиcharCodeне равно нулю. Список виртуальных кодов клавиш содержится вТаблице П18.1.

Типы событий клавиатуры

Клавиатура всегда генерирует три отдельных события: keydown(нажатие клавиши),keypress(удержание нажатой клавиши) иkeyup(отпускание клавиши). Длительное нажатие клавиши приводит к тому, что событиеkeypressгенерируется многократно.

keydown

Генерируется при нажатии клавиши. Виртуальный код клавиши заносится в keyCode,charCodeобнуляется. Это событие применимо к большинству элементов.

bubbles: true;

cancelable: true;

контекст: altKey, ctrlKey, shiftKey, metaKey, keyCode.

keypress

Генерируется при удержании нажатой клавиши. Свойства keyCodeиcharCodeформируются как описано выше. Это событие применимо к большинству элементов.

bubbles: true;

cancelable: true;

контекст: altKey, ctrlKey, shiftKey, metaKey, keyCode, charCode.

keyup

Генерируется при отпускании клавиши. Виртуальный код клавиши заносится в keyCode,charCodeобнуляется. Это событие применимо к большинству элементов.

bubbles: true;

cancelable: true;

контекст: altKey, ctrlKey, shiftKey, metaKey, keyCode.

4.11.9. События изменения документа: интерфейс MutationEvent

Поддержка: Не поддерживается.

Не поддерживается.

Интерфейс MutationEventявляется производным от интерфейсаEventи содержит дополнительную информацию о событиях, порожденных изменением структуры документа.

Свойства интерфейса MutationEvent

Свойство

Изменяемое

Модель

Описание

attrChange

Нет

DOM 2

Тип изменения атрибута.

attrName

Нет

DOM 2

Название изменившегося атрибута.

newValue

Нет

DOM 2

Новое значение атрибута или текста.

prevValue

Нет

DOM 2

Старое значение атрибута или текста.

relatedNode

Нет

DOM 2

Вторичный узел, связанный с событием.

Методы интерфейса MutationEvent

Метод

Модель

Описание

initMutationEvent

DOM 2

Инициализирует событие.

Свойство attrChange

Синтаксис:событие.attrChange

Изменяемое: нет

Поддержка: Не поддерживается.

Не поддерживается.

Свойство attrChangeвозвращает тип изменения атрибута для событияDOMAttrModified. Тип изменения атрибута задается целым числом в соответствии со следующей таблицей:

Название

Значение

Описание

MODIFICATION

1

Изменено значение атрибута.

ADDITION

2

Добавлен новый атрибут.

REMOVAL

3

Удален атрибут.

Свойство attrName

Синтаксис:событие.attrName

Изменяемое: нет

Поддержка: Не поддерживается.

Не поддерживается.

Свойство attrNameвозвращает строку, содержащую название изменившегося атрибута для событияDOMAttrModified.

Свойство newValue

Синтаксис:событие.newValue

Изменяемое: нет

Поддержка: Не поддерживается.

Не поддерживается.

Свойство newValueвозвращает строку, содержащую новое значение узлаAttrдля событияDOMAttrModifiedили новое значение узлаCharacterDataдля событияDOMCharacterDataModified.

Свойство prevValue

Синтаксис:событие.prevValue

Изменяемое: нет

Поддержка: Не поддерживается.

Не поддерживается.

Свойство prevValueвозвращает строку, содержащую предыдущее значение узлаAttrдля событияDOMAttrModifiedили предыдущее значение узлаCharacterDataдля событияDOMCharacterDataModified.

Свойство relatedNode

Синтаксис:событие.relatedNode

Изменяемое: нет

Поддержка: Не поддерживается.

Не поддерживается.

Свойство relatedNodeвозвращает указатель на объектNode, соответствующий вторичному узлу, связанному с данным событием. Какой именно узел является вторичным, зависит от события и описано ниже для каждого из событий.

Метод initMutationEvent

Синтаксис: узел.initMutationEvent(eventType, canBubble, isCancelable, relatedNode,

prevValue, newValue, attrName, attrChange)

Аргументы: eventType, prevValue, newValue, attrName — выражения типа DOMString

canBubble, isCancelable — логические выражения

relatedNode — выражение типа Node

attrChange — числовое выражение

Поддержка: Не поддерживается.

Не поддерживается.

Метод initMutationEventиспользуется для инициализации параметров события изменения документа, созданного методомcreateEvent. Он должен вызываться до того, как данное событие будет сгенерировано методомdispatchEvent, и изменяет только те параметры события, которые задаются его аргументами. АргументeventTypeзадает название данного события в форматеDOMString; это название должно бытьименем языка XML. АргументыcanBubbleиisCancelableуказывают соответственно, является ли данное событиепросачивающимсяиотменяемым. Остальные аргументы задают значения одноименных свойств события.

Типы событий изменения документа

DOM 2 определяет следующие типы событий изменения документа (которые обозревателями пока не поддерживаются):

DOMSubtreeModified

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

bubbles: true;

cancelable: false;

контекст: нет.

DOMNodeInserted

Это событие генерируется после добавления нового узла в дерево документа. Его целью является новый узел.

bubbles: true;

cancelable: false;

контекст: relatedNodeуказывает на отца нового узла.

DOMNodeInsertedIntoDocument

Это событие генерируется после добавления нового узла в дерево документа либо непосредственной вставкой, либо вставкой поддерева, содержащего данный узел. При непосредственном добавлении узла перед этим событием генерируется DOMNodeInserted. Целью является новый узел.

bubbles: false;

cancelable: false;

контекст: нет.

DOMNodeRemoved

Это событие генерируется перед удалением узла из дерева документа. Его целью является удаляемый узел.

bubbles: true;

cancelable: false;

контекст: relatedNodeуказывает на отца удаляемого узла.

DOMNodeRemovedFromDocument

Это событие генерируется перед удалением узла из дерева документа либо непосредственным удалением, либо удалением поддерева, содержащего данный узел. При непосредственном удалении узла перед этим событием генерируется DOMNodeRemoved. Целью является удаляемый узел.

bubbles: false;

cancelable: false;

контекст: нет.

DOMAttrModified

Это событие генерируется при изменении атрибутов узла. Его целью является Node, чьи атрибуты изменились;relatedNodeуказывает на сооветствующий объектAttr.

bubbles: true;

cancelable: false;

контекст: relatedNode, prevValue, newValue, attrName, attrChange.

DOMCharacterDataModified

Это событие генерируется при изменении текстового содержимого узла. Его целью является изменившийся объект CharacterData.

bubbles: true;

cancelable: false;

контекст: prevValue, newValue.

4.11.10. События HTML

DOM 2 поддерживает следующие события HTML 4.0:

load

Это событие генерируется по завершении загрузки документа, всех фреймов в FRAMESETили элементаOBJECT.

bubbles: false;

cancelable: false;

контекст: нет.

unload

Это событие генерируется по завершении выгрузки документа из окна или фрейма. Оно применимо к элементам BODYиFRAMESET.

bubbles: false;

cancelable: false;

контекст: нет.

abort

Это событие происходит, если загрузка страницы была прервана до завершения загрузки графического образа. Оно применимо к элементу OBJECT.

bubbles: true;

cancelable: false;

контекст: нет.

error

Это событие происходит, если произошла ошибка при загрузке графического образа или при выполнении сценария. Оно применимо к элементам OBJECT,BODYиFRAMESET.

bubbles: true;

cancelable: false;

контекст: нет.

select

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

bubbles: true;

cancelable: false;

контекст: нет.

change

Это событие происходит, когда управляющий элемент формы теряет фокус и его значение изменилось после получения им фокуса. Оно применимо к элементам INPUT,SELECTиTEXTAREA.

bubbles: true;

cancelable: false;

контекст: нет.

submit

Это событие происходит при пересылке формы. Оно применимо только к элементу FORM.

bubbles: true;

cancelable: true;

контекст: нет.

reset

Это событие происходит при инициализации формы. Оно применимо только к элементу FORM.

bubbles: true;

cancelable: false;

контекст: нет.

focus

Это событие происходит, когда управляющий элемент формы получает фокус. Оно применимо к элементам INPUT,SELECT,TEXTAREA,BUTTONиLABEL.

bubbles: false;

cancelable: false;

контекст: нет.

blur

Это событие происходит, когда управляющий элемент формы теряет фокус. Оно применимо к элементам INPUT,SELECT,TEXTAREA,BUTTONиLABEL.

bubbles: false;

cancelable: false;

контекст: нет.

resize

Это событие происходит при изменении размеров окна обозревателя.

bubbles: true;

cancelable: false;

контекст: нет.

scroll

Это событие происходит при прокрутке окна обозревателя.

bubbles: true;

cancelable: false;

контекст: нет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]