Виды событий

До появления операционных систем с графическим интерфейсом (типа Windows) было распространено так называемое «процедурное» программирование, суть которого заключается в том, что программа жестко определяет, когда и в какой последовательности вызываются те или иные процедуры, составляющие программу (языками такого типа являются, например, C, Pascal или Basic). Программист должен был заранее разработать и реализовать алгоритм выполнения своей программы. При ее запуске она жестко следовала инструкциям вызова соответствующих процедур.

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

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

· действие пользователя (например, нажатие кнопки);

· действие графического приложения (например, загрузка Web-страницы);

· действие операционной системы (например, перезагрузка компьютера).

События, возникающие в Web-странице, определены в спецификации DOM 2 Events.

Каждое событие в DOM 2 имеет мишень – элемент документа HTML, к которому событие направляется для обработки. Если для данной мишени определены одна или несколько процедур обработки данного события, они все выполняются. В процессе обработки события могут быть запущены другие события, которые обрабатываются синхронно с породившими их событиями. После этого обработка события заканчивается.

В спецификации DOM2 Events определены также следующие расширенные алгоритмы обработки событий:

· всплывание события;

· захват события;

· отмена обработки события.

«Всплывание» события (event bubbling) реализуется следующим образом: после обработки события в элементе событие как бы «всплывает» вверх по иерархическому дереву и обрабатывается во всех узлах-предках (если в этих узлах также определены обработчики указанных событий). Так, на рис. 4.5.3а обработка события будет выполнена сначала в узле мишени, а потом события «всплывает» вверх вплоть до узла Document. При этом оно также будет обработано в узле d, а затем в узле b.

Захватом события (event capture) называется перехват обработки событий в узлах-потомках узлом-предком. Так, на рис. 4.5.3б событие будет перехвачено и выполнено сначала в узле b, а затем будет «спускаться» вниз до узла мишени и будет обработано также в узле d, а затем в узле-мишени.

Отмена обработки события или просто отмена события (event cancellation) означает, что событие, заданное для данного элемента по умолчанию (если такое событие существует) будет проигнорировано.

Возможность «всплытия» события и возможность отмены действия события по умолчанию являются свойствами каждого события с булевскими значениями true или false.

Для событий с возможностью «всплытия» можно отменить «всплытие» (в этом случае обработка события будет производиться в узле-мишени). Для события с возможность отмены действия по умолчанию это действие можно отменить.

Рис. 4.5.3. Алгоритмы обработки события: а) всплывание события; б) захват события

Все события в спецификации DOM2 Events разбиты на три группы:

· события графического интерфейса, связанные с взаимодействием с пользователем (UI Events);

· события графического интерфейса, не связанные с взаимодействием с пользователем (UI Logical Events);

· события, связанные с изменением структуры документа (Mutation Events).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: