Edycja w debugerze Chrome

247

Jak „dynamicznie” edytować kod JavaScript w debugerze Chrome? To nie jest dla mnie, więc nie mam dostępu do pliku źródłowego. Chcę edytować kod i zobaczyć, jakie efekty mają na stronie, w tym przypadku zatrzymując animację w kolejce kilka razy.

Tomek
źródło
5
Możesz użyć Opery. Opera umożliwia edycję plików JS. Po miękkim przeładowaniu strony zmiany zostaną zastosowane. Kliknij prawym przyciskiem myszy> Źródło> Wprowadź zmiany> Zastosuj zmiany.
XP1
To niesamowity samouczek dla debugera Chrome. Pokazuje bardzo proste kroki wprowadzania zmian w skryptach w debuggerze.
SaganRitual
1
Możesz także „wstrzyknąć” kod za pomocą warunkowego punktu przerwania . W podanym przykładzie użyj num = 5, console.log(arguments[0], num), falsedo aktualizacji i zarejestrowania wartości wewnątrz foofunkcji.
mem
Proszę znaleźć stackoverflow.com/questions/66420/…
stackinfostack

Odpowiedzi:

80

Możesz użyć wbudowanego debugera JavaScript w Narzędziach dla programistów Chrome na karcie „Skrypty” (w późniejszych wersjach jest to karta „Źródła”), ale zmiany, które zastosujesz w kodzie, są wyrażane tylko w momencie, gdy przechodzi przez nie wykonanie. Oznacza to, że zmiany w kodzie, który nie działa po wczytaniu strony, nie będą miały wpływu. W przeciwieństwie do np. Zmian w kodzie znajdującym się w najechaniu myszką obsługi , które można testować w locie.

Jest film z wydarzenia Google I / O 2010 przedstawiającego inne możliwości Narzędzi Chrome dla programistów.

Adam
źródło
26
W późniejszych wersjach Chrome ikony kart zniknęły, a karta „Skrypty” została przemianowana na „Źródła” - więc znalezienie debuggera w javascript może nie być oczywiste. Więcej informacji tutaj stackoverflow.com/questions/12113769/...
chrisjleu
9
Nie ma takiej metody. Nie mogę również modyfikować kodu w zakładce Źródła.
Melab
17
Debuger Chrome nie pozwala na lokalną modyfikację javascript. Fałszywe.
omikes
1
@oMiKeY Co to jest fałsz? Chrome z pewnością pozwala modyfikować skrypt w debuggerze.
JLRishe,
6
@oMiKeY możesz zmodyfikować, jeśli skrypt nie jest
prettified
284

Natknąłem się na to dzisiaj, kiedy bawiłem się z czyjąś stroną internetową.

Uświadomiłem sobie, że mogę dołączyć punkt przerwania w debuggerze do jakiegoś wiersza kodu przed tym, co chciałem dynamicznie edytować. A ponieważ punkty przerwania pozostają nawet po ponownym załadowaniu strony , mogłem edytować zmiany, które chciałem, gdy byłem zatrzymany w punkcie przerwania, a następnie pozwalałem na załadowanie strony.

Tak szybko, aby obejść, a jeśli to działa w twojej sytuacji:

  1. Dodaj punkt przerwania we wcześniejszym punkcie skryptu
  2. Odśwież stronę
  3. Edytuj zmiany w kodzie
  4. CTRL+ s(zapisz zmiany)
  5. Anuluj debuger
sjacob
źródło
1
Dzięki! Okazało się, że zadziałało to, gdy trzeba wprowadzić zmiany w anonimowej funkcji, która została wywołana tuż przy ładowaniu strony.
Peter
1
Argh, ponieważ próbowałem tego wcześniej i to nie zadziałało i chociaż, o rany, jak mi tego brakowało. Ale tak, nie działa dla mnie.
Jamie Hutber,
8
Kluczowe dla mnie było wiedzieć, że zmiany należy zapisać (krok 4). Dzięki!
Sergey Goliney,
3
Dla mnie nie działa na javascript w plikach HTML. Ponadto, jeśli dodałeś folder do obszaru roboczego, wybierz lokalny plik js, kliknij prawym przyciskiem myszy i zamapuj ten plik na dito sieci.
oo
1
Więc nie ma żadnego sposobu modyfikowania skryptów w plikach HTML?
Warrior
13

Oto czego szukasz:

1.- Przejdź do zakładki Źródło i otwórz plik javascript

2. - Edytuj plik, kliknij go prawym przyciskiem myszy, a pojawi się menu: kliknij Zapisz i zapisz lokalnie.

Aby wyświetlić różnicę lub przywrócić zmiany, kliknij prawym przyciskiem myszy i wybierz opcję Modyfikacje lokalne ... Zobaczysz różnice w stosunku do oryginalnego pliku, jeśli rozwiniesz pokazany znacznik czasu.

Bardziej szczegółowe informacje tutaj: http://www.sitepoint.com/edit-source-files-in-chrome/

artemisian
źródło
5

Całkiem proste, przejdź do zakładki „skrypty”. I wybierz żądany plik źródłowy i kliknij dwukrotnie dowolny wiersz, aby go edytować.

gnur
źródło
4
Byłoby wspaniale, gdybyś mógł zapisać zmiany na dysku w przypadku pliku: // URL
Jim Blackler
3
Tak właśnie zrobiłem, ale zmiany nie zostały odzwierciedlone na stronie, jak można się spodziewać. Muszę zmienić $ (selektor) .fadeIn () ... na $ (selektor) .stop (prawda, prawda) .fadeIn () ... Wiesz? I chcę zobaczyć, jak to się dzieje na stronie.
Tom
1
Cholera, masz rację. Teraz zastanawiam się, dlaczego Chrome pozwala nam edytować cokolwiek, jeśli nie ma żadnego efektu.
gnur
„Zapisz jako ...” zapisuje tylko plik na komputerze. Nie stosuje zmian po ponownym załadowaniu strony. Jeśli chcesz zastosować zmiany do plików JS w celu debugowania, możesz użyć Opery.
XP1
1
a ten o nazwie tincr: chrome.google.com/webstore/detail/…
JustGoscha,
3

Ponieważ jest to dość popularne pytanie dotyczące edycji JS na żywo, chcę wskazać kolejną przydatną opcję. Jak opisał svjacob w swojej odpowiedzi:

Uświadomiłem sobie, że mogę dołączyć punkt przerwania w debuggerze do jakiegoś wiersza kodu przed tym, co chciałem dynamicznie edytować. A ponieważ punkty przerwania pozostają nawet po ponownym załadowaniu strony, mogłem edytować zmiany, które chciałem, gdy byłem zatrzymany w punkcie przerwania, a następnie pozwalałem na załadowanie strony.

Powyższe rozwiązanie nie działało dla mnie dla dość dużego JS (pakiet webpack - wersja zminimalizowana 3,21 MB, 130k wierszy kodu w wersji prettified) - chrome zawiesił się i poprosił o ponowne załadowanie strony, które cofnęło wszelkie zapisane zmiany. W tym przypadku najlepszym rozwiązaniem był Fiddler, w którym można ustawić opcję AutoRespond w celu zastąpienia dowolnego zasobu zdalnego dowolnym plikiem lokalnym z komputera - szczegółowe informacje można znaleźć w pytaniu SO .

W moim przypadku musiałem również dodać nagłówki CORS do skrzypka, aby skutecznie udawać odpowiedź.

dominik
źródło
2

Jeśli jego javascript, który działa po kliknięciu przycisku, wystarczy dokonać zmiany w sekcji Źródła> Źródła (w narzędziach programistycznych w chrome) i naciśnięcie Ctrl + S, aby zapisać . Robię to cały czas.

Jeśli odświeżysz stronę, zmiany w javascript znikną, ale Chrome nadal będzie pamiętał twoje punkty przerwania.

developer747
źródło
2

Teraz Google Chrome wprowadził nową funkcję. Korzystając z tej funkcji możesz edytować kod w przeglądarce Chrome. (Trwała zmiana lokalizacji kodu)

W tym celu naciśnij F12 -> zakładka Źródło - (prawa strona) -> System plików - w tym miejscu wybierz lokalizację kodu. a następnie przeglądarka Chrome poprosi o pozwolenie, a po tym kod zostanie zatopiony w kolorze zielonym. i możesz zmodyfikować swój kod, który będzie również odzwierciedlał twoją lokalizację kodu (oznacza to, że zmieni się na stałe)

Dzięki

stackinfostack
źródło
2

Podobnie jak odpowiedź @mark, możemy utworzyć fragmenty w Chrome DevTools, do overridedomyślnego JavaScript. Wreszcie możemy zobaczyć, jakie efekty mają na stronie.

Wizerunek

wino kami
źródło
1

oto delikatne wprowadzenie do debugera js w chrome, które napisałem. Może pomoże innym w szukaniu informacji na ten temat: http://meeech.amihod.com/getting-started-with-javascript-debugging-in-chrome/

meeech
źródło
1
To dobry opis. Niestety, nie mówi nic o edycji JS w debuggerze, co jest zadaniem, o którym mowa.
Bruno Bronosky,
Nie zgadzać się. Na końcu podam przykład, w jaki sposób „„ dynamicznie ”edytować kod JavaScript w debuggerze Chrome”, który jest częścią pytania.
meeech
1
meeech, chyba że nie rozumiem twojego postu, demonstrujesz, jak ocenić JS na konsoli. Różni się to od edycji funkcji, więc gdy funkcja zostanie wywołana w przyszłości, zachowuje się inaczej.
Bruno Bronosky
Słusznie. Zrozumiałem, że edycja oznacza zmianę wokół wartości strony aktywnej i pomyślałem, że napisanie pomogłoby, ponieważ gdy już znajdziesz ją w konsoli, możesz bawić się wartościami i dowolną inną rzeczą w kontekście wykonania.
meeech
1
tak, mówię, robiłem dokładnie to, co opisujesz przez wiele lat. Właśnie w końcu się denerwowałem, że nie byłem w stanie uzyskać dobrej pętli sprzężenia zwrotnego do zmiany procedur obsługi zdarzeń. Zwłaszcza te, które uruchamiają się podczas ładowania strony. Jak omawialiśmy z AaronLS w komentarzach do odpowiedzi gnur, czasami edycja w DevTools> Źródła> Źródła działa, a innym razem nie. Ale kiedy to działa, jest całkiem słodkie!
Bruno Bronosky
1

możesz dynamicznie edytować pliki javascrpit w debuggerze Chrome na karcie Źródła , jednak zmiany zostaną utracone, jeśli odświeżysz stronę, aby wstrzymać ładowanie strony przed wprowadzeniem zmian, musisz ustawić punkt przerwania, a następnie ponownie załadować stronę i edytuj zmiany, a na końcu wyłącz debuger, aby zobaczyć, jak zmiany zaczną obowiązywać. Debuger Chrome

Seif Tamallah
źródło
musisz pozostawić otwartą konsolę, aby chrom zatrzymał się w
punktach
nie działa. Przeładowuję za pomocą F5 i zatrzymuje się, zmieniam plik, następnie kontynuuję działanie i pojawia się ten sam błąd, który właśnie naprawiłem. Jest to plik js obok strony głównej.,
darkgaze
1

Szukałem sposobu na zmianę skryptu i debugowanie tego nowego skryptu. Udało mi się to zrobić:

  1. Ustaw punkt przerwania w pierwszym wierszu skryptu, który chcesz zmienić, i debuguj.

  2. Załaduj stronę ponownie, aby został osiągnięty punkt przerwania

  3. Wklej nowy skrypt i ustaw w nim pożądane punkty przerwania

  4. Ctrl + s, a strona zostanie odświeżona, co spowoduje trafienie w punkt przerwania w pierwszym wierszu.

  5. F8, aby kontynuować, a teraz nowo wklejony skrypt zastępuje oryginalny, o ile nie zostaną wykonane żadne przekierowania i przeładowania.

100r
źródło
0

Możesz użyć opcji „Zastąpienia” w Chrome, aby zachować zmiany w javascript między ładowaniami stron, nawet jeśli nie hostujesz oryginalnego źródła.

  1. Utwórz folder w obszarze Narzędzia dla programistów> Źródła> Zastąpienia
  2. Chrome poprosi o pozwolenie na folder, kliknij Zezwalaj
  3. Edytuj plik w menu Źródła> Strona, a następnie zapisz (ctrl-s). Fioletowa kropka oznacza, że ​​plik jest zapisywany lokalnie.

Podkarta Zastępuje w Narzędziach Chrome dla programistów

Mark Foreman
źródło