Как узнать, какие события JavaScript сработали?
у меня есть список выбора:
<select id="filter">
<option value="Open" selected="selected">Open</option>
<option value="Closed">Closed</option>
</select>
когда я выберите Closed
страница перезагружается. В этом случае он показывает закрытые билеты (вместо открытых). Он отлично работает, когда я делаю это вручную.
проблема в том, что страница не перезагружается при выборе Closed
С Watir:
browser.select_list(:id => "filter").select "Closed"
это обычно означает, что некоторое событие JavaScript не запускается. Я могу запускать события с помощью Watir:
browser.select_list(:id => "filter").fire_event "onclick"
но мне нужно знать, какое событие в огонь.
есть ли способ узнать, какие события определены для элемента?
3 ответов
просто подумал, что я добавлю, что вы можете сделать это и в Chrome:
Ctrl + Shift + Я (инструменты разработчика) > источники> точки останова прослушивателя событий (справа).
вы также можете просмотреть все события, которые уже были прикреплены, просто щелкнув правой кнопкой мыши на элементе, а затем просматривая его свойства (панель справа).
например:
Не уверен, что это так же мощно, как опция firebug, но этого было достаточно для большинства моих вещей.
другой вариант, который немного отличается, но удивительно удивительным визуальным событием: http://www.sprymedia.co.uk/article/Visual + событие+2
он выделяет все элементы на странице, которые были связаны и имеют всплывающие окна, показывающие вызываемые функции. Довольно изящно для закладки! Также есть плагин Chrome, Если это больше ваша вещь - не уверен в других браузерах.
AnonymousAndrew также указал monitorEvents(window);
здесь
выглядит так:Палий (Firefox add-on) имеет ответ:
- открыть Firebug
- щелкните правой кнопкой мыши элемент на вкладке HTML
- клик
Log Events
- включить вкладку "консоль"
- нажмите кнопку Сохранить на вкладке консоли (в противном случае вкладка консоли очистится после перезагрузки страницы)
- выберите
Closed
(вручную) -
в консоли будет что-то вроде этого tab:
... mousemove clientX=1097, clientY=292 popupshowing mousedown clientX=1097, clientY=292 focus mouseup clientX=1097, clientY=292 click clientX=1097, clientY=292 mousemove clientX=1096, clientY=293 ...
источник: Firebug Совет: Журнал Событий
Что касается Chrome, проверьте monitorEvents() через API командной строки.
- Откройте консоль через меню > Сервис > консоль JavaScript.
- Enter
monitorEvents(window);
-
просмотр консоли, затопленной событиями
... mousemove MouseEvent {dataTransfer: ...} mouseout MouseEvent {dataTransfer: ...} mouseover MouseEvent {dataTransfer: ...} change Event {clipboardData: ...} ...
есть и другие примеры в документация. Я предполагаю, что эта функция была добавлена после предыдущего ответа.