Прошу совет или примеры как сделать на странице слушатель запускаемых скриптом функции. Есть уж больно умудрённый и большой скрипт, где весь код идёт одной строкой и с “запутанными” вызовами функций. Надеюсь получить последовательность/имена вызываемых функций и их код.
Насколько я знаю не получится.
Как вариант можно открыть в редакторе и добавить регуляркой консоль лог в начало каждой функции.
Можно попробовать задеркорировать объявление функции, не уверен что это сработает, но можно попробовать. И тогда выбирать текстовое тело функции и парсить из него название.
Насчет “слушать” функции не знаю что подсказать, думаю что так поставленную задачу скорее всего невозможно решить. А для получения вот этого
последовательность/имена вызываемых функций и их код.
Можно попробовать следующее:
Переписать какой-то часто используемый метод (типа .push
) или класс типа Promise
, и в переписанный код вставить debugger
. Выполнение скрипта остановится на это дебаггере, и можно будет рассмотреть call stack и значения переменных в инструментах разработчика. И потом повторять этот трюк с разными методами, разными условиями когда входить в дебаггер итд до достигания уровня понимания исполняемого кода.
Еще идея. Порядок вызова функций можно залогировать через ту же методику с переписыванием стандартных функций-методов, и использованием console.trace
вместо debugger
.
И еще вариант (я сам такое применял). С помощью инструментов типа fiddler подменить текст скрипта локальной копией, но со вставленными debugger-ами. Или же подменять часть текста скрипта на текст с дебаггером. Но этот подход потребует от тебя разбирательства с фиддлером на уровне более среднего.
-
Использовать возможности самого Chrome. Developer Tools Performance
Будет записана конкретная последовательность вызовов при конкретных действиях.
Тут уж сам смотри будет для тебя плюсом или минусом -
Использовать статитечиский анализатор с визуализацией зависимостей функций. Есть простенькое, но довольно неплохое расширение для VS Code
- Мощное расширение. Насколько понял работает больше как рекордер из браузера, но в VS Code.