40

Я пытаюсь отладить веб-страницу, которая сильно использует события JavaScript, и поэтому мне нужно отслеживать все запущенные события JavaScript.Использование Firefox, как я могу отслеживать все запущенные события JavaScript?

Большинство событий связаны с использованием jQuery. Следовательно, было бы особенно полезно, если бы был способ конкретно отслеживать только те события.

ответ

51

Конечно, вы можете отлично справиться с Firebug, консолью и вкладкой скриптов, где вы можете добавить контрольные точки и часы, но вы хотите сделать это умнее/проще.

Существует аккуратный плагин Firebug под названием EventBug, который только регистрирует все события и группирует их по типу событий, чтобы вы могли развернуть и посмотреть, что их вызвало.

EventBug Screenshot

EventBug не делает это в режиме реального времени, вы должны обновить, хотя.

Другой способ - использовать функцию «События журнала» для любого элемента DOM в Firebug. Это делает это в режиме реального времени, и вы можете видеть, какие события заказа запускаются и запускаются.

Попробуйте это:

  • Переключение с открытым Firebug
  • Щелкните правой кнопкой мыши элемент на вкладке HTML, если вы хотите, чтобы увидеть все события, затем щелкните правой кнопкой мыши <body>
  • Выберите Log Events из контекстного меню
  • Убедитесь, что вкладка «Консоль» включена.
  • Нажмите, чтобы включить режим «Persist» на вкладке «Консоль» (иначе вкладка «Консоль» будет очищена после перезагрузки страницы)
  • Возможно, вам придется выбрать Closed (вручную)
  • Voila! следить за событиями поток на вкладке консоли

Это то, что вы видите журнала событий:

enter image description here

Также стоит попробовать FireQuery надстройка для Firebug, чтобы увидеть, какие элементы в DOM есть JQuery связанные с ними события и то, что они есть.

И как упоминается ответ benvie, это возможно и в инструментах разработчика webkit.

+0

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

+0

@gsharp Не можете ли вы использовать профилирование, войдя в консоль и точки останова, чтобы выяснить ошибку? Предоставляет ли он какие-либо ошибки для консоли? Firebug в значительной степени является окончательным выбором в отладке JS. – dakdad

+0

Я уже работаю с Firebug. Просто хочу, чтобы инструмент показывал мне, какое событие уволено в каком порядке. Действительно, я мог бы сделать это с помощью протоколирования и точек останова, но если * .js супер, и вы еще не знакомы с кодом, это может сильно помочь. – gsharp

4

Это не существует в Firebug. Я считаю, и основной проблемой является отсутствие поддержки или отсутствие воздействия на уровне api. В качестве альтернативы, существует только несколько способов подписаться на события DOM: Element.prototype.addEventListener (и window.addEventListener и document.addEventListener и XMLHttpRequest.addEventListener и некоторые другие), кроме свойств «onevent», которые являются наблюдаемыми и перехватываемыми.

Но реалистично, отладчик WebKit и отладчик Chromium (который является вебкитом с дополнительными точками) позволяют отлаживать и наблюдать за подключенными слушателями. Иногда бывает проще отлаживать ошибки одного браузера в другом браузере с лучшей видимостью состояния приложения/времени выполнения, даже если этот браузер не обнаруживает ошибку.

enter image description here

https://developers.google.com/chrome-developer-tools/docs/elements

+1

Чтобы уточнить, каждый инструмент Dev имеет свои сильные стороны. Firebug, например, имеет поддержку для отображения унаследованных свойств, а также значений доступа в качестве свойств и имеет параметры, контролирующие некоторые из этих параметров. С другой стороны, отладчик webkit не имеет никакого параметра для отображения унаследованных свойств или для разрешения доступа к их значениям. Если вы не подсчитаете переписку Object.getOwnProperty [Имена | Дескриптор] с вашими собственными пользовательскими функциями. –

+0

См. Мой обновленный ответ выше. Firefox/Firebug позволяет это сделать. –

+1

Также я как бы беру еще одну вещь, о которой я сказал. Я не знаю о чем-то, что делает инструменты dev, отличные от .. –

7

Это было введено несколько версий назад, но, как в Firefox 35 событий, связанных с элементом можно увидеть на инспектора: рядом с элементом, который вы хотите увидеть события (в случае если есть), будет значок с буквами «EV». Щелкните по нему, и вы увидите небольшое всплывающее окно с событиями для этого элемента.

Firefox events inspector

Подробнее: http://flailingmonkey.com/view-dom-events-in-firefox-developer-tools/

+1

Это круто, но то, что мне нужно, чтобы «видеть», - это то, что вызвано событием. Это тоже возможно? – gsharp

+1

Эта функция в комплекте, начиная с Firefox 33: https://hacks.mozilla.org/2014/07/event-listeners-popup-media-sidebar-cubic-bezier-editor-more-firefox-developer-tools-episode-33/Firefox 34 можно разрешить оболочку jQuery для действительного кода события: https://hacks.mozilla.org/2014/09/webide-storage-inspector-jquery-events-iframe-switcher-more-firefox-developer-tools-episode -34 / – gavenkoa

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