W jaki sposób przerywając wykonywanie skryptu, jeśli nie chcę kontynuować, podczas przechodzenia przez kod JavaScript w debugerze Google Chrome? Jedyny sposób, jaki znalazłem, to zamknięcie okna przeglądarki.
Naciśnięcie „Załaduj ponownie tę stronę” uruchamia resztę kodu, a nawet przesyła formularze, jak naciśnięcie F8 „Kontynuuj”.
AKTUALIZACJA :
Po naciśnięciu F5 (Odśwież), gdy skrypt jest wstrzymany:
- Google Chrome (v22) uruchamia skrypt. Jeśli skrypt prześle żądanie HTTP, zostanie wyświetlona odpowiedź HTTP na to żądanie. Oryginalna strona nie jest odświeżana.
- IE 9 po prostu zawiesza się. Jednak IE ma opcję „Zatrzymaj debugowanie”, która po naciśnięciu (pod warunkiem, że nie nacisnąłeś F5 wcześniej), nadal uruchamia skrypt poza debuggerem.
- Firebug zachowuje się identycznie jak Chrome.
Zamykanie, a następnie ponowne otwieranie okna przeglądarki nie zawsze jest kolejnym najłatwiejszym sposobem, ponieważ zabija stan sesji przeglądarki i może to być ważne. Wszystkie punkty przerwania również zostaną utracone.
AKTUALIZACJA (styczeń 2014) :
Odśwież podczas debugowania:
- Chrome v31: pozwala na uruchamianie skryptów i zatrzymuje się na kolejnych punktach przerwania (ale nie przesyła żądań ajax), a następnie odświeża.
- IE 11: odświeżanie nic nie robi, ale możesz nacisnąć F5, aby kontynuować.
- Firefox v26: pozwala na uruchamianie skryptów, ale nie zatrzymuje się na kolejnych punktach przerwania, wysyła żądania ajax, a następnie odświeża.
Rodzaj postępu!
Przejdź do tej samej strony podczas debugowania:
- Chrome v31: taki sam jak Odśwież.
- IE 11: skrypty są zakończone, uruchamiana jest nowa sesja przeglądarki (tak samo jak zamykanie i ponowne otwieranie).
- Firefox v26: nic się nie dzieje.
Również Juacala zasugerował skuteczne obejście tego problemu. Na przykład, jeśli używasz jQuery, uruchomienie delete $ z konsoli zatrzyma wykonywanie po napotkaniu dowolnej metody jQuery. Przetestowałem to we wszystkich powyższych przeglądarkach i mogę potwierdzić, że działa.
AKTUALIZACJA (marzec 2015) :
Wreszcie, po ponad 2 latach i prawie 10 000 wyświetleń, prawidłowa odpowiedź została udzielona przez Alexandra K. Google Chrome ma własnego Menedżera zadań, który może zabić proces tabulacji bez zamykania samej karty, zachowując wszystkie punkty przerwania i inne rzeczy nietknięte.
Poszedłem nawet do BrowserStack.com, aby przetestować go w Chrome v22 i stwierdziłem, że działało to w ten sposób nawet w tym czasie.
Obejście Juacali jest nadal przydatne podczas debugowania w IE lub Firefox.
AKTUALIZACJA (styczeń 2019) :
Chrome Dev Tools w końcu dodał właściwy sposób, aby zatrzymać wykonywanie skryptu, co jest miłe (choć nieco ukryte). Szczegółowe informacje można znaleźć w odpowiedzi Jamesa Gentesa.
debugger;
w konsoli narzędzi deweloperskich, a natychmiast uruchomi debugger i zatrzyma skrypt.