JavaScript. Подробное руководство, 6-е издание, стр. 256
17.3.4. Возвращаемые значения обработчиков
Значение, возвращаемое обработчиком события, зарегистрированным установкой свойства объекта или с помощью HTML-атрибута, следует учитывать. Обычно возвращаемое значение false сообщает броузеру, что он не должен выполнять действия, предусмотренные для этого события по умолчанию. Например, обработчик
<b>onclick</b><b>onkeypress</b>Также важно значение, возвращаемое обработчиком
<b>onbefоreunload</b><b>Window</b>Важно понимать, что учитываются значения, возвращаемые обработчиками событий, только если обработчики зарегистрированы посредством установки свойств. Далее мы увидим, что обработчики, зарегистрированные с помощью
<b>addEventListener()</b><b>attachEvent()</b><b>preventDefault()</b><b>returnValue</b>17.3.5. Порядок вызова
Для элемента документа или другого объекта можно зарегистрировать более одного обработчика одного и того же типа события. При возникновении этого события броузер вызовет все обработчики в порядке, определяемом следующими правилами:
• В первую очередь вызываются обработчики, зарегистрированные установкой свойства объекта или с помощью HTML-атрибута, если таковые имеются.
• Затем вызываются обработчики, зарегистрированные с помощью метода addEventListener(), в порядке их регистрации. [45]
• Обработчики, зарегистрированные с помощью метода
<b>attachEvent(),</b>17.3.6. Распространение событий
Когда целью события является объект
<b>Window</b><b>XMLHttpRequest</b><b>Document</b><b>Element</b>После вызова обработчиков событий, зарегистрированных в целевом элементе, большинство событий «всплывают» вверх по дереву DOM. В результате вызываются обработчики в родителе целевого элемента. Затем вызываются обработчики, зарегистрированные в родителе родителя целевого элемента. Так продолжается, пока не будет достигнут объект
<b>Document</b><b>Window</b><b><form></b>Способностью всплывать обладает большинство событий, возникающих в элементах документа. Заметным исключением являются события «focus», «blur» и «scroll». Событие «load», возникающее в элементах, также всплывает, но оно прекращает всплывать в объекте
<b>Document</b><b>Window</b><b>Window</b>Всплытие - это третья «фаза» распространения события. Вызов обработчика события в целевом объекте - это вторая фаза. Первая фаза протекает еще до вызова обработчиков целевого объекта и называется фазой «перехвата». Напомню, что метод
<b>addEventListener()</b><b>addEventListener(),</b>Фаза перехвата напоминает фазу всплытия, только событие распространяется в обратном направлении. В первую очередь вызываются перехватывающие обработчики объекта
<b>Window</b><b>Document</b><b>body</b>Наличие фазы перехвата позволяет обнаруживать события еще до того, как они достигнут своей цели. Перехватывающий обработчик может использоваться для отладки или для фильтрации событий, чтобы в комплексе с приемом отмены события, описываемом ниже, предотвратить вызов обработчиков в целевом объекте. Одной из типичных областей применения фазы перехвата является реализация буксировки элементов мышью, когда событие перемещения указателя мыши должен обрабатывать буксируемый объект, а не документ, в пределах которого осуществляется буксировка. Пример реализации приводится в примере 17.2.
17.3.7. Отмена событий
В разделе 17.3.4 говорилось, что значение, возвращаемое обработчиком события, зарегистрированным как свойство, можно использовать для отмены действий, выполняемых броузером по умолчанию в случае этого события. В броузерах, поддерживающих метод
<b>addEventListener(),</b><b>рreventDefault()</b><b>returnValue</b>