Как я могу найти источник события javascript, которое было запущено программно? - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь отладить сценарий, в котором нажатие клавиши Enter на кнопке отправки в конечном итоге приводит к возникновению события «щелчка» для этой кнопки. Я могу только предположить, что событие click было запущено программно. Наличие огня событий click, по-видимому, является правильным поведением в приложении, но мне нужно отследить его происхождение, потому что у меня возникли некоторые проблемы с браузером.

Я использую jQuery и ExtJS, и все обработчики нажатия клавиш направляются сначала через jQuery, затем через Ext, а затем в наш код. Кнопка является объектом Ext. Я прошел все ключевые обработчики, и я не сталкивался ни с какими экземплярами fireEvent ('click') или чем-либо еще, чтобы объяснить, откуда происходит событие click.

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

  1. KeyDown
  2. 1010 * нажатие клавиши *
  3. нажмите

Событие click по-прежнему срабатывает, если я подавляю обработку нажатия клавиш и нажатия клавиш.

Стек вызовов в обработчике кликов не сообщает мне, откуда произошло событие, поэтому я прибегнул к поиску в базе кода и установлению точек останова в следующих случаях:

  • fireEvent ( 'нажмите'
  • триггер ( 'нажмите'
  • initEvent (

Могу ли я найти что-нибудь еще? Существуют ли более эффективные стратегии для отладки взаимодействия событий javascript?

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Это не странное поведение в любом случае.Это поведение по умолчанию для всех элементов кнопки, независимо от того, какой браузер.AFAIK, если вы нажмете Enter на кнопке, она не будет вызывать событие keyup / keydown, потому что они не существуют в этом элементе DOM.

В этом случае срабатывание события щелчка совершенно нормально.

Я настроил пример, чтобы продемонстрировать это ...

http://jsfiddle.net/SMsQD/1/

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

1 голос
/ 13 июля 2011

jQuery может инициировать событие щелчка, используя метод click(). Обратите внимание на пустые скобки.

...