Как перехватить вызываемые функции Javascript? - PullRequest
7 голосов
/ 07 октября 2010

Я работаю с COGNOS, очень разочаровывающим BI-приложением, которое сильно зависит от Javascript. Обычно при изменении поля <select> данные на экране обновляются, предположительно, с помощью функции AJAX или чего-то подобного. Я хотел бы форсировать это изменение с помощью jQuery, но я не уверен, как перехватить вызов, который он делает, чтобы я мог продублировать его. Существует также метрическая тонна JS-кода, поэтому его трудно найти вручную.

Есть ли способ использовать Firebug для отображения различных вызываемых функций? Мой подход правильный?

Ответы [ 4 ]

12 голосов
/ 07 октября 2010

Если вы откроете панель Firebug Script , в левом верхнем углу будет кнопка, похожая на кнопку паузы на пульте телевизора: ||. Это говорит Firebug приостановить работу следующего бита JavaScript, который запускается. Таким образом, я открою страницу, убедитесь, что панель Script включена, нажмите эту кнопку, а затем измените поле select. Это должно вызвать точку останова в Firebug, после чего вы можете пройти по коду, чтобы выяснить, что вызывается, когда.

В качестве альтернативы, если вы не возражаете против использования другого инструмента, Google Chrome имеет встроенный отладчик и инспектор, который может показать вам обработчики событий, прикрепленные к элементу. Таким образом, в Chrome, если вы откроете страницу, щелкните правой кнопкой мыши поле select и выберите Проверка элемента , затем справа внизу должен быть список прикрепленных обработчиков событий. к этому. С этим немного проще работать.

Наконец, в любом инструменте, если вы можете определить бит кода в кишках, который фактически вызывает перезагрузку данных (например, путем поиска URL-адреса, или XmlHTTPRequest экземпляра, или jQuery .ajax, * Функции 1020 *, .get или .getJSON, если она использует jquery), вы можете установить для нее точку останова, а затем активировать выбор, а затем посмотреть на стек вызовов (справа в обоих инструментах).

Удачи!

1 голос
/ 11 октября 2010

К сожалению, на данный момент вам лучше всего использовать Cognos, используя устаревший метод отладки окна оповещения.IBM заявила, что более новые версии Cognos будут работать в Firefox, но код до IBM был очень ориентирован на IE, и даже не особенно хорош в новых версиях IE.Вы также можете использовать функциональность отладчика F12 в новых версиях IE, что иногда полезно.Я не претендую на то, что все это так же хорошо, как Firebug.

Кроме того, что касается фактической проблемы, которую вы пытались отлаживать, выбор в Cognos, если вы нажмете его во время редактирования отчета,параметр под названием «Auto-submit».Если вы измените это на «нет», вам не нужно будет отключать поведение в jQuery.

0 голосов
/ 07 октября 2010

Выберите элемент в Firefox и посмотрите, каково его событие onclick или, если у него есть идентификатор, найдите этот файл в файле JS.

0 голосов
/ 07 октября 2010

Если вы используете Firefox + Firebug, вы можете активировать вкладку «net» и проверить все сделанные Ajax-вызовы.(смотрите под кнопкой XHR)

...