Как найти в чужом коде вызываемую по событию javascript-функцию?

Уважаемые, пришлось по проекту править малоизученный javascript.

Есть сторонний ресурс, на коем имеется javascript-механизм, абсолютно удовлетворяющий моим текущим нуждам - по клику один слой заменяется другим. Механика простая, решил залезть в код, найти функцию, которую повесили на ссылку. Так как дело с javascript имел давно, предполагал увидеть что-то вроде:

<a href="#" onClick="javascript:socialSwitch(select);">link</a>


но увидел

<a class="switcher toggle_active" href="https://www.facebook.com/299609513866" 
rel="external nofollow" target="_blank">Facebook</a>


Полез гуглить, какие существуют способы повесить событие на ссылку. Нашел, что можно повесить функцию по id-шнику. Это понятно. Но здесь даже id-шника нет.

Теперь главный вопрос темы - уважаемые javascript-разработчики, если Вам приходится разбирать чужой код, как Вы быстро определяете, в каком месте и какая функция обрабатывает тот или иной event?..

Мне ни одной хитрости в голову не пришло. Только полным перебором по коду пробежаться, заглядывая во все javascript-файлы.
  • Вопрос задан
  • 5491 просмотр
Пригласить эксперта
Ответы на вопрос 3
@amygdala
На самом деле все можно сделать проще
Для хрома есть такой extension, как Visual Event.
cf0026e0d1c07869c1425893398a8db9.png
Это расширение визуально выделяет элементы, на которые повешаны события, с ссылкой на файл и строку, где был добавлен обработчик.
Ответ написан
Комментировать
Sander_Li
@Sander_Li
Backend developer
Через dev tools можно.
Небольшой курс
Ставите Event Listener Breakpoints на клик, и при выполнении клика, браузер остановится и покажет место в коде.
-88693455.png
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Сначала идет выборка по селектору... У ссылки есть класс switcher, который как бы намекает что по нему скорее всего и ищут. Либо же по toggle_active, либо по их комбинации. Словом в данном случае нужно определять наиболее вероятную часть селектора и дальше банальный поиск по исходникам (искать в ручную даже на небольших проектах дико долго). 99% что там используется jQuery, так что дальше два варианта. Результат выборки по селектору записыватеся в переменную, либо же напрямую к коллекции применяется функция on('click'), вешающая обработчик.

Что бы было удобнее, обычно селекторы вешаются на data-* атрибуты. Например добавить функционал на селектор [data-switcher] и внутри уже разбираться что свитчить и как.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы