Ответ 1
ОК, это интересно. Моим вариантом использования является то, что у меня есть серия ссылок (теги A
) на экране в представлении WebKit. Чтобы проверить, какая область событий доступна, используя jQuery 1.3.1, я приложил каждое событие, указанное в this page (даже те, которые не имеют смысла) к ссылкам, затем использовали элементы управления вверх, вниз и enter в эмуляторе Android и отметили, какие события были запущены в каких обстоятельствах.
Вот код, который я использовал для прикрепления событий, с результатами, которые нужно выполнить. Обратите внимание: я использую привязку событий "live", потому что для моего приложения теги A
вставляются динамически.
$.each([
'blur',
'change',
'click',
'contextmenu',
'copy',
'cut',
'dblclick',
'error',
'focus',
'keydown',
'keypress',
'keyup',
'mousedown',
'mousemove',
'mouseout',
'mouseover',
'mouseup',
'mousewheel',
'paste',
'reset',
'resize',
'scroll',
'select',
'submit',
// W3C events
'DOMActivate',
'DOMAttrModified',
'DOMCharacterDataModified',
'DOMFocusIn',
'DOMFocusOut',
'DOMMouseScroll',
'DOMNodeInserted',
'DOMNodeRemoved',
'DOMSubtreeModified',
'textInput',
// Microsoft events
'activate',
'beforecopy',
'beforecut',
'beforepaste',
'deactivate',
'focusin',
'focusout',
'hashchange',
'mouseenter',
'mouseleave'
], function () {
$('a').live(this, function (evt) {
alert(evt.type);
});
});
Вот как он трясся:
-
При загрузке первой страницы ничем не подсвеченной (без какой-либо уродливой оранжевой рамки выбора вокруг какого-либо элемента) с помощью кнопки "вниз" для выбора первого элемента следующие события (по порядку):
mouseover
,mouseenter
,mousemove
,DOMFocusIn
-
С выбранным элементом, перейдя к следующему элементу с помощью кнопки "вниз", следующие события (по порядку):
mouseout
,mouseover
,mousemove
,DOMFocusOut
,DOMFocusIn
-
С выбранным элементом, нажав кнопку "enter", следующие события запускаются (по порядку):
mousemove
,mousedown
,DOMFocusOut
,mouseup
,click
,DOMActivate
Это поражает меня как кучу случайного мусора. И кто этот нахальный IE-только событие (mouseenter
) делает камею, а затем отдыхает? Ну ладно, по крайней мере сейчас я знаю, какие события следует наблюдать.
Было бы здорово, если бы другие захотели взять мой тестовый код и выполнить более тщательный пробег, возможно, используя элементы формы, изображения и т.д.