Debuger sieci Chrome zapewnia mi doskonały widok wszystkich zasobów HTTP załadowanych dla strony. Ale usuwa listę za każdym razem, gdy ładowana jest nowa strona HTML najwyższego poziomu. To bardzo utrudnia debugowanie stron, które automatycznie ładują się ponownie z tego czy innego powodu (uruchamianie skryptu lub 300 odpowiedzi).
Czy mogę powiedzieć Chromeowi, aby nie kasował debugera sieciowego po załadowaniu nowej strony najwyższego poziomu? Czy mogę wrócić i sprawdzić zasoby sieciowe poprzedniej strony?
Czy mogę w jakiś sposób zmusić Chrome do wstrzymania przed załadowaniem nowej strony, gdy nie kontroluję strony, którą próbuję debugować, która dokonuje przekierowania? Jest to część tańca OpenID, który idzie nie tak, więc połączenie SSL i poświadczeń bardzo utrudnia debugowanie za pomocą narzędzi wiersza polecenia.
Odpowiedzi:
Zostało to zmienione od wersji 32, dzięki @Daniel Alexiuc i @Thanatos za komentarze.
Prąd (≥ v32)
U góry karty „Sieć” DevTools znajduje się pole wyboru, aby włączyć funkcję „Zachowaj dziennik”. Jeśli jest zaznaczone, dziennik sieci jest zachowywany przy ładowaniu strony.
Mała czerwona kropka po lewej stronie ma teraz za zadanie całkowicie włączyć i wyłączyć logowanie do sieci.
starsza wersja
W starszych wersjach Chrome (tutaj v21) w stopce karty „Sieć” znajduje się mała, klikalna czerwona kropka.
Jeśli najedziesz na niego myszą, powie ci, że po aktywacji „Zachowa dziennik podczas nawigacji”. Zawiera obietnicę.
źródło
Nie znam sposobu, aby zmusić Chrome, aby nie wyczyścił debugera sieciowego, ale może to osiągnąć to, czego szukasz:
window.addEventListener("beforeunload", function() { debugger; }, false)
Spowoduje to wstrzymanie chrome przed załadowaniem nowej strony przez uderzenie w punkt przerwania.
źródło
Po prostu aktualizacja odpowiedzi @bfncs
Myślę, że w przypadku Chrome 43 zachowanie nieco się zmieniło. Nadal musisz włączyć opcję Zachowaj dziennik, aby zobaczyć, ale teraz przekieruj pokazane na karcie Inne, gdy załadowany dokument jest pokazany w Doc.
To zawsze mnie myli, ponieważ mam wiele żądań sieciowych i filtruję je według typu XHR, Doc, JS itp. Ale w przypadku przekierowania karta Doc jest pusta, więc muszę zgadywać.
źródło
Innym doskonałym rozwiązaniem do debugowania połączeń sieciowych przed przekierowaniem na inne strony jest wybranie
beforeunload
punktu przerwania zdarzeniaW ten sposób możesz przerwać przepływ bezpośrednio przed przekierowaniem go na inną stronę, w ten sposób wszystkie połączenia sieciowe, dane sieciowe i dzienniki konsoli nadal tam są.
To rozwiązanie jest najlepsze, gdy chcesz sprawdzić, jaka jest odpowiedź na połączenia
PS: Możesz także użyć punktów przerwania XHR, jeśli chcesz zatrzymać się tuż przed określonym połączeniem lub dowolnym połączeniem (patrz przykładowy obraz)
źródło
load
wydarzeniu możemy zatrzymać się na początku i łatwo ustawić punkt przerwania. Dzięki!