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