Как узнать, какие события 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 + Я (инструменты разработчика) > источники> точки останова прослушивателя событий (справа).

вы также можете просмотреть все события, которые уже были прикреплены, просто щелкнув правой кнопкой мыши на элементе, а затем просматривая его свойства (панель справа).

например:

  • щелкните правой кнопкой мыши на кнопке upvote для левый
  • выберите инспектировать элемент
  • свернуть раздел стили (раздел в крайнем правом углу - двойной шеврон)
  • разверните опцию прослушиватели событий
  • теперь вы можете увидеть события, связанные с upvote
  • Не уверен, что это так же мощно, как опция 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: ...}
      ...
      

    есть и другие примеры в документация. Я предполагаю, что эта функция была добавлена после предыдущего ответа.