2012-01-20 12 views
13

Na przykład, udawaj, że istnieje kod JavaScript, który wykona someFunction() po kliknięciu przycisku i kliknę ten przycisk. Zastanawiam się, czy jest jakiś sposób, aby zobaczyć, że został właśnie wykonany someFunction(). Czy istnieje sposób sprawdzenia, jakie funkcje są wykonywane w Chrome w czasie rzeczywistym?Czy istnieje sposób sprawdzenia, jakie funkcje JavaScriptu (nazwa funkcji) są wykonywane w czasie rzeczywistym w Inspektorze Chrome?

Jeśli jest to zakładka Profiles w inspektorze, która wykonuje lewę, jak dokładnie można określić, które funkcje będą uruchamiane w czasie rzeczywistym?

EDIT 21.01.2012 12: 36p Pacific: Z komentarzem Briana nikiel jest poniżej, zakładka Oś czasu w Inspector jest sposób, aby zobaczyć, co dzieje się w czasie rzeczywistym, ale jak widzisz nazwy wykonywanych funkcji w na osi czasu?

+2

Rzeczywisty czas rzeczywisty byłby nieco bezużyteczny, ponieważ byłby zbyt szybki do naśladowania. Ustaw * punkty przerwania * na kodzie, który chcesz monitorować. – deceze

+2

Widziałem poszczególne funkcje wymienione na osi czasu. –

+0

Nie mogę ustawić punktów przerwania, ponieważ nie jest to mój kod i nie wiem, gdzie ustawić punkty przerwania. hehe. To właśnie próbuję rozgryźć! @BrianNickel, o której osi czasu mówisz? – trusktr

Odpowiedz

12

Do osiągnięcia tego celu można użyć narzędzia programisty Oś czasu i skryptów.

  • Otwórz panel narzędzi programistycznych i naciśnij Nagraj w obszarze Oś czasowa, aby rozpocząć śledzenie.
  • Wywołaj interesujące Cię wydarzenie (np. W swoim przykładzie, kliknij przycisk), a następnie zatrzymaj nagrywanie (lub kontynuuj nagrywanie, ale poznaj ilość zbieranych danych).
  • Zwróć uwagę, że wpisy są zalogowane w panelu Oś czasu. Znajdź odpowiednie wydarzenie i kliknij strzałkę twistie po lewej stronie paska czasu dla tego wydarzenia. Spowoduje to wyświetlenie wywołań funkcji związanych z tym zdarzeniem.
  • Kliknij łącze po prawej stronie wywołań funkcji, aby wyświetlić odpowiedni skrypt JavaScript. (Pytasz o nazwę funkcji, ale pamiętaj, że zdarzenie może być powiązane z anonimową funkcją, więc nie zawsze jest dostępna nazwa.)
  • Jeśli chcesz przejrzeć samą procedurę obsługi zdarzenia, włóż punkt przerwania w linii po deklaracji programu obsługi (zakładając, że deklaracja programu obsługi zdarzeń jest większa niż jedna linia). Ewentualnie rozwiń punkty przerwania odbiornika zdarzeń w panelu Skrypty i sprawdź odpowiedni typ zdarzenia (zgodnie z listą na panelu Oś czasu dla odpowiedniego zdarzenia). Zauważ, że to podejście będzie działało w każdym wystąpieniu tego zdarzenia, zamiast w jedynej inwokacji, którą jesteś zainteresowany.

Jeśli masz problemy z zminimalizowanym JavaScript i wstawieniem punktów przerwania (ponieważ każda linia jest tak długa), oto wskazówka: otwórz zminiaturyzowany plik skryptu w panelu Skrypty za pomocą rozwijanego menu, a następnie kliknij na {}. Umożliwi to Pretty Print, rozszerzając zminimalizowany kod na coś bardziej czytelnego przez dodanie białych znaków. Pozwala to na wstawianie punktów przerwania w celu zwiększenia ziarnistości. Zwróć uwagę, że jeśli teraz powrócisz do panelu Oś czasu, odniesienia do skryptów (np. jquery.min.js:3) będą teraz korzystać z ładnie wydrukowanych numerów linii, a nie z minified, bez białych.

+0

Rozumiem, prowadzi do linii kodu, w którym funkcja jest znaleziona. Miły! Widzę, że działa to dobrze z niemineralizowanym kodem, ale jeśli masz minified kod, który zawiera wszystko od jednego do trzech linii, to masz pecha, ponieważ w jednej linii może być wiele funkcji zdefiniowanych. Sądzę, że jest to najlepsze, co mamy teraz. Byłoby to wygodne, gdyby dodano również liczbę kolumn, a nie tylko liczbę linii. Na przykład "jquery.min.js: 3: 56" byłoby ładniejsze niż po prostu 'jquery.min.js: 3'. – trusktr

+1

W rzeczywistości istnieje pewna sztuczka, aby to obejść. Zobacz moją zmienioną odpowiedź. – cheeken

+0

Aha, cool! Rzeczywiście jest to dokładnie sposób, aby to zrobić! – trusktr

0

Istnieje wiele dobrych narzędzi można użyć: console.trace();, debugger itp

+0

To nie zapewnia sposobu sprawdzenia, które funkcje są wywoływane w czasie rzeczywistym bez modyfikowania kodu. – trusktr

0
+0

Interesujące, ale kod, który mam, nie jest moim własnym kodem, więc staram się dowiedzieć, jakie części kodu wykonują określone działania (na przykład na przykład onclick). Wszystko to w drugim artykule jest miłe, ale musisz wiedzieć GDZIE ustawić punkty przerwania i jakie wyrażenia monitorować, czego nie mam pojęcia. Czy istnieje sposób sprawdzenia, która funkcja początkowa zostanie wykonana po wystąpieniu określonego zdarzenia (np. Kliknięcia)? – trusktr

Powiązane problemy