2012-04-18 2 views
427

У меня есть настраиваемый элемент формы на странице из библиотеки. Я хочу посмотреть, какие события javascript запускаются, когда я взаимодействую с ним, потому что я пытаюсь выяснить, какой обработчик события использовать.Как просмотреть события, запущенные с помощью элемента в Chrome DevTools?

Как это сделать с помощью Chrome Web Developer?

+11

Этот букмарклет может быть полезным: http://www.sprymedia.co .uk/article/Visual + Event + 2 – scytale

+1

Ответ здесь ценен, но букмарклет выше^на самом деле решил мою проблему. http://www.sprymedia.co.uk/article/Visual+Event+2 – Jazzy

ответ

693
  • Хит F12 открыть Dev Tools
  • Перейдите на вкладку Источники
  • На правой стороне, прокрутите вниз до "Event Listener Breakpoints", и развёрнутое дерево
  • Нажмите на события, которые вы хочу слушать.
  • Взаимодействовать с целевым элементом, если они стреляют вы получите точку останова в отладчике

Кроме того, вы можете щелкнуть правой кнопкой на целевом элементе -> выберите «проверить элемент» Прокрутка вниз по правой стороне рамы dev, внизу - «прослушиватели событий». Разверните дерево, чтобы узнать, какие события связаны с элементом. Не уверен, что это работает для событий, которые обрабатываются посредством барботажа (я догадываюсь не)

+9

Это решение является проблемой, если это события мыши, которые вы после, поскольку точка останова убивает поток – WendyG

+47

Что делать, если все события указывают на мини-jquery i Не заботьтесь о том, как мне добраться до функции, использующей этот jquery. –

+10

Может ли он показывать пользовательские события, которые были созданы мной? Когда я прочитал, что это изменило жизнь, это было первое, о чем я думал. Я что-то пропустил? – Tebe

14

Это не покажет пользовательские события, подобные тем, которые может создать ваш скрипт, если это плагин jquery. например:

jQuery(function($){ 
var ThingName="Something"; 

$("body a").live('click', function(Event){ 
    var $this = $(Event.target); 
     $this.trigger(ThingName + ":custom-event-one"); 
}); 

$.on(ThingName + ":custom-event-one", function(Event){ 
    console.log(ThingName, "Fired Custom Event: 1", Event); 
}) 

}); 

Группа событий под Scripts в инструментах разработчика Chrome не будет показывать вам «что-то: заказ событийно-один»

+14

Как же тогда найти эти события? – Calydon

565

Вы можете использовать monitorEvents функцию.

Просто проверить ваш элемент (right mouse clickInspect на видимый элемент или перейдите на Elements вкладку в Chrome Инструменты разработчика и выберите разыскиваемого элемент), затем перейти на Console вкладку и написать:

monitorEvents($0) 

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

Чтобы прекратить получать эти данные просто пишу это, чтобы утешить:

unmonitorEvents($0) 

$0 только последний элемент DOM выбран Chrome Developer Tools. Вы можете передать любой другой объект DOM (например, результат getElementById или querySelector).

Вы также можете указать событие «тип» как второй параметр, чтобы ограничить контролируемые события определенным предопределенным множеством. Например:

monitorEvents(document.body, 'mouse') 

Список этих доступных видов - here.

Я сделал небольшой GIF, который показывает, как работает эта функция:

usage of monitorEvents function

+26

этот ответ намного лучше и делает то, что было задано (возможно, эта функция недоступна в 2012 году) – llamerr

+4

Это должен быть новый принятый ответ – jpwynn

+2

Согласен. Это метод defacto для отслеживания и отслеживания событий на * определенных * элементах. – dmackerman

24

Visual Event миленький букмарклет, который вы можете использовать для просмотра обработчиков событий элемента.На онлайн-демо можно посмотреть here.

+0

он не может быть использован как инструмент швейцарской армии.с моей точки зрения это для новичков. –

+3

Также доступен как расширение Chrome: https://chrome.google.com/webstore/detail/visual-event/pbmmieigblcbldgdokdjpioljjninaim – pelms

+0

спасибо, что это сработало отлично для меня –

14

Для jQuery (не менее версии 1.11.2) для меня работала следующая процедура.

  1. Щелкните правой кнопкой мыши на элементе и открыть «Developer Tools Chrome»
  2. Тип $._data(($0), 'events'); в
  3. Разверните вложенные объекты в «Консоль» и дважды щелкните значение handler:.
  4. Это показывает исходный код вложенной функции, ищите ее часть, используя вкладку «Поиск».

И пришло время, чтобы остановить Переизобретая колесо и начать использовать события ваниль JS ... :)

how-to-find-jquery-click-handler-function

Смежные вопросы