Прежде всего, вот список типов событий, которые определены стандартами W3C. (Этот список основан на атрибутах onevent, определенных в стандарте HTML5. Я предполагаю, что существуют десятки других типов событий, но этот список достаточно длинный.)
- прервать
- afterprint
- BeforePrint
- beforeunload
- Размытие
- canplay
- canplaythrough
- изменение
- нажмите
- ContextMenu
- копия
- cuechange
- вырезано
- DblClick
- DOMContentLoaded
- сопротивление
- dragend
- DragEnter
- DragLeave
- DragOver
- dragstart
- капля
- durationchange
- 1052 * закончился *
- ошибка
- внимание
- focusin
- focusout
- formchange
- forminput
- hashchange
- ввод
- недействительный
- KeyDown
- 1074 * нажатие клавиши *
- KeyUp
- нагрузки
- loadeddata
- loadedmetadata
- loadstart
- сообщение
- MouseDown
- MouseEnter
- MouseLeave
- MouseMove
- MouseOut
- 1098 * Mouseover *
- MouseUp
- MouseWheel
- отсутствует
- онлайн
- pagehide
- pageshow
- паста
- пауза
- играть
- игры
- popstate
- прогресс
- ratechange
- readystatechange
- 1128 * повтор *
* * Сбросить тысячу сто двадцать девять
- размер
- перемотать
- добившиеся
- поиск
- выберите
- показать
- застопорился
- хранение
- отправить
- 1150 * приостановить *
- timeupdate
- отмена
- выгрузка
- volumechange
- ждет
Теперь, можно ли определить глобальный обработчик событий, который вызывается, когда любое событие первоначально происходит на любом элементе на странице? (В этом случае я не хочу считать те события, которые произошли в элементах, потому что они всплыли из элемента-потомка - поэтому я написал «первоначально происходит».)
Если это невозможно, возможно ли по крайней мере определить обработчик события, который вызывается, когда любое событие всплывает до корня дерева DOM (которое является либо объектом document
, либо объект window
- оба должны работать)? (Я знаю, что можно прекратить пузыриться программно, но я бы использовал этот обработчик событий на странице, у которой нет других обработчиков, определенных для каких-либо других элементов.) (Кроме того, я считаю, что некоторые события не всплывают, но давайте проигнорируем эти дела ради этого аргумента.)
Я знаю, что могу сделать это (используя jQuery):
$(document).bind('abort afterprint beforeprint beforeunload etc.', function() {
// handle event
});
но это было бы довольно нежелательным решением для меня.
Кстати, мне не нужно кросс-браузерное решение. Если это работает только в одном браузере, я в порядке.
Кроме того, Firebug может регистрировать события , но я хотел бы иметь возможность отлавливать событие программно (через JavaScript), а не просто регистрировать их в консоли.