Javascript, как я могу найти, какой вызов функции привел к конкретному событию пользовательского интерфейса? - PullRequest
0 голосов
/ 28 сентября 2010

Я хочу узнать, что вызвало событие. А именно, панель уведомлений на этом сайте stackoverflow.com (панель, которая сообщает вам, когда кто-то опубликовал ответ на вопрос, на который вы пишете ответ. Она медленно прокручивается сверху вниз и предоставляет действительно хороший интерфейс для уведомлений пользователей. Я видел, как он работает почти на любой странице.

Я представляю, как оно работает (мне нужно найти его имя):

special_notification( message );

В кратком изложении, как мне узнать, как выглядит вызов (имя функции и аргументы), который генерирует этот эффект, когда весь javascript минимизирован, и я понятия не имею, что включает в себя его предоставление.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2010
  1. Загрузите и установите Firebug в Firefox.
  2. Перейдите по интересующему вас URL и откройте Firebug.Возможно, вам придется перезагрузить страницу.
  3. Теперь нажмите на маленький значок стрелки в верхней правой части firebug.Это позволит вам выделить любой элемент на странице и предоставить соответствующий HTML-код этому элементу.
  4. Теперь, когда у вас есть идентификатор элемента, вы сможете найти его в коде JavaScript.Даже если оно минимизировано, имя должно соответствовать имени DOM.
0 голосов
/ 28 сентября 2010

Чтобы читать минимизированные js, вы можете использовать инструмент, подобный http://jsbeautifier.org.

Что касается вашего другого беспокойства, вы хотите прослушать все события на странице и узнать, что их вызвало и какой код выполняется.?это правильно?

Обновление:

Нет возможности прослушать все события.Если вам действительно нужно, вы можете настроить прослушиватели для каждого события, но вы все равно будете пропускать пользовательские события, которые, я полагаю, вам нужны.

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

Вы также можете прослушать все События DOM, в jQuery вы будете делать:

$('body').bind('DOMSubtreeModified', function(e){
  console.log('DOMSubtreeModified triggered');
  console.log(e); //Firebug console.
});

Где e будет содержать информацию о событии.

Надеюсь, что имеет смысл.

...