Редагування в налагоджувачі Chrome


247

Як "динамічно" редагувати код JavaScript у відладчику Chrome? Це не для мене, тому я не маю доступу до вихідного файлу. Я хочу відредагувати код і побачити, які ефекти вони мають на сторінці, і в цьому випадку зупиняти анімацію в черзі купу разів.


5
Ви можете використовувати Opera. Opera дозволяє редагувати файли JS. Після легкого перезавантаження сторінки ваші зміни будуть застосовані. Клацніть правою кнопкою миші> Джерело> Внести зміни> Застосувати зміни.
XP1

Це дивовижний посібник для налагоджувача Chrome. Він показує дуже прості кроки для внесення змін до налагодження у ваші сценарії.
SaganRitual

1
Ви також можете "ввести" код через умовну точку розриву . У наведеному прикладі використовуйте num = 5, console.log(arguments[0], num), falseдля оновлення та реєстрації значення всередині fooфункції.
пам’яті

Ви можете знайти цей stackoverflow.com/questions/66420 / ...
stackinfostack

Відповіді:


80

Ви можете використовувати вбудований налагоджувач JavaScript в Інструментах для розробників Chrome на вкладці "Сценарії" (у більш пізніх версіях це вкладка "Джерела"), але зміни, які ви застосовуєте до коду, виражаються лише в момент, коли виконання проходить через них. Це означає, що зміни в коді, який не працює після завантаження сторінки, не матимуть ефекту. На відміну від, наприклад, змін у коді, що знаходиться у обробниках миші , які ви можете перевірити під час руху.

Є відео з події Google I / O 2010, де представлені інші можливості Інструментів для розробників Chrome.


26
У пізніших версіях Chrome піктограми вкладок перейшли, а вкладку "Сценарії" перейменовано на "Джерела" - тому, можливо, невідомо знайти відладчик javascript. Деякі докладніше тут stackoverflow.com/questions/12113769 / ...
chrisjleu

9
Такого методу немає. Я також не можу змінити код на вкладці "Джерела".
Мелаб

17
Відладчик Chrome не дозволяє локально змінювати JavaScript. Помилковий.
omikes

1
@oMiKeY Що неправдиво? Chrome, безумовно, дозволяє змінювати сценарій у відладчику.
JLRishe

6
@oMiKeY ви можете змінити, якщо сценарій не попередньо визначений
peterchaula

284

Я натрапив на це сьогодні, коли я грав із чужим веб-сайтом.

Я зрозумів, що можу приєднати крапку на відладці до якогось рядка коду до того, що я хотів динамічно редагувати. А оскільки точки перерви залишаються навіть після перезавантаження сторінки , я зміг змінити потрібні зміни, коли я зупинився на точці перерви, а потім продовжував дозволяти завантажувати сторінку.

Тож як швидка робота, і якщо це відповідає вашій ситуації:

  1. Додайте точку перерви в більш ранню точку сценарію
  2. Перезавантажити сторінку
  3. Відредагуйте свої зміни в коді
  4. CTRL+ s(зберегти зміни)
  5. Відключіть налагоджувач

1
Дякую! Я виявив, що це спрацьовує, коли потрібно внести зміни в самостійно виконуючу анонімну функцію, яку викликали біля завантаження сторінки.
Пітер

1
Аргу, бо я раніше це пробував, і це не спрацювало, і хоч о людино, як я це пропустив. Але так, не працює для мене.
Джеймі Хатбер

8
Для мене головне було знати, що зміни потрібно зберегти (крок 4). Дякую!
Сергій Голіней

3
Для мене не працює JavaScript у файлах html. Крім того, якщо ви додали папку в робочу область, виберіть локальний файл js, клацніть правою кнопкою миші та позначте цей файл у мережевому dito.
oo

1
Тож немає жодного способу змінити скрипти в html-файлах?
Воїн

13

Це те, що ви шукаєте:

1.- Перейдіть на вкладку Джерело та відкрийте файл javascript

2. - Відредагуйте файл, клацніть правою кнопкою миші і з'явиться меню: натисніть « Зберегти» та збережіть його локально.

Щоб переглянути різні або відновити зміни, клацніть правою кнопкою миші та виберіть у меню опцію Локальні зміни ... Якщо ви розгорнете показану часову позначку, ви побачите, що зміни відрізняються щодо оригінального файлу.

Більш детальна інформація тут: http://www.sitepoint.com/edit-source-files-in-chrome/


5

Досить просто, перейдіть на вкладку "Сценарії". І виберіть потрібний вихідний файл та двічі клацніть будь-який рядок, щоб відредагувати його.


4
Було б дивним, якби ви могли зберегти зміни на диску у випадку файлу: // URL-адреси
Джим Блеклер,

3
Саме це я і зробив, але зміни не відображалися на сторінці, як можна було очікувати. Мені потрібно змінити $ (селектор) .fadeIn () ... на $ (селектор). Стоп (вірно, правда) .fadeIn () ... Знаєте? І я хочу бачити, що це станеться на сторінці.
Том

1
О чорт, ти маєш рацію. Тепер мені цікаво, чому Chrome дозволяє нам будь-що редагувати, якщо це не має жодного ефекту ..
gnur

"Зберегти як ..." файл зберігає лише на вашому комп'ютері. Він не застосовує зміни після перезавантаження сторінки. Якщо ви хочете застосувати зміни до файлів JS для налагодження, ви можете використовувати Opera.
XP1

1
і цей називається tincr: chrome.google.com/webstore/detail/…
JustGoscha

3

Оскільки це досить популярне питання, яке стосується редагування в реальному часі JS, я хочу зазначити ще один корисний варіант. Як описав svjacob у своїй відповіді:

Я зрозумів, що можу приєднати крапку на відладці до якогось рядка коду до того, що я хотів динамічно редагувати. А оскільки точки перерви залишаються навіть після перезавантаження сторінки, я зміг змінити потрібні зміни, коли я зупинився на точці перерви, а потім продовжував дозволяти завантажувати сторінку.

Наведене вище рішення не працювало для мене для досить великого JS (пакет веб-пакетів - мінімізована версія 3,21 МБ, 130k рядків коду в попередньо встановленій версії) - хром зазнав аварії та попросив перезавантажити сторінку, яка повернула будь-які збережені зміни. Шлях в цьому випадку був Fiddler, де ви можете встановити опцію AutoRespond для заміни будь-якого віддаленого ресурсу будь-яким локальним файлом з вашого комп’ютера - детальну інформацію див. У цьому питанні .

У моєму випадку я також повинен був додати заголовки CORS до Fiddler, щоб успішно висміяти відповідь.


2

Якщо його javascript, що працює на кнопці, натискає, то внесення змін у пункті "Джерела"> "Джерела" (в інструментах для розробників у хромі) та натискання клавіш Ctrl + S для збереження достатньо . Я роблю це постійно.

Якщо ви оновите сторінку, ваших змін у JavaScript не буде, але Chrome все одно запам'ятає ваші точки зламу.


2

Тепер Google Chrome представив нову функцію. За допомогою цієї функції Ви можете редагувати код у хромованому перегляді. (Постійна зміна місця розташування коду)

Для цього натисніть F12 -> Вкладка джерела - (праворуч) -> Файлова система - у цьому, будь ласка, виберіть своє місцезнаходження коду. і тоді браузер Chrome попросить вас дозволу, і після цього код засипатиме зеленим кольором. і ви можете змінити свій код, і він також відобразиться на вашому розташуванні коду (це означає, що він буде постійно змінюватися)

Дякую


2

Як і у відповідь @mark, ми можемо створити фрагменти в Chrome DevTools до overrideJavaScript за замовчуванням. Нарешті, ми можемо побачити, які ефекти вони мають на сторінці.

Зображення


1

ось ніжне вступ до налагоджувача js у хромі, який я написав. Можливо, це допоможе іншим, хто шукає інформацію про це: http://meeech.amihod.com/getting-started-with-javascript-debugging-in-chrome/


1
Це гарна реєстрація. На жаль, це нічого не говорить про редагування JS в налагоджувачі, що є задачею, про яку йдеться.
Бруно Броноський

Не погоджуюсь. Ви бачите, наприкінці я конкретно навожу приклад, як "" динамічно "редагувати код JavaScript у налагоджувачі Chrome", що є частиною питання.
meeech

1
meeech, якщо я не розумію вас, ви демонструєте, як оцінити JS на консолі. Це відрізняється від редагування функції тим, що коли функція буде викликана в майбутньому, вона поводиться інакше.
Бруно Броноський

Досить справедливо. Я зрозумів, що редагування означає зміну навколо значень сторінки, що перебуває в реальному часі, і подумав, що написання допоможе, оскільки, як тільки ви будете мати її в консолі, ви можете грати зі значеннями та будь-чим іншим js у контексті виконання.
meeech

1
так, мійч, я робив саме те, що ви описуєте протягом багатьох років. Мене нарешті розчарувало неможливість досягти хорошого циклу зворотного зв’язку для зміни обробників подій. Особливо ті, що спрацьовують під час завантаження сторінки. Як ми з AaronLS обговорювали у коментарях відповіді gnur, іноді редагуючи в DevTools> Sources> Sources працює і в інші рази. Але коли це працює, це дуже солодко!
Бруно Броноський

1

ви можете динамічно редагувати файли javascrpit у відладчику Chrome, на вкладці " Джерела" , однак зміни будуть втрачені, якщо оновити сторінку, призупинити завантаження сторінки перед тим, як внести зміни, вам потрібно встановити точку перерви, а потім перезавантажити сторінку і відредагуйте свої зміни, і, нарешті, скасуйте налагоджувач, щоб побачити зміни. Відладчик Chrome


ви повинні тримати консоль відкритою, щоб хром зупинився на
точках прориву

не працює. Я перезавантажуюсь за допомогою F5, і він зупиняється, я змінюю файл, потім продовжую працювати і отримую ту ж помилку, яку я щойно виправив. Це js-файл поруч із головною сторінкою.,
darkgaze

1

Я шукав спосіб змінити сценарій та налагодити цей новий сценарій. Мені вдалося це зробити:

  1. В першому рядку сценарію, який ви хочете змінити, встановіть точку перерви та налагоджуйте.

  2. Перезавантажте сторінку, щоб потрапила точка розриву

  3. Вставте новий сценарій і встановіть у ньому потрібні точки проходу

  4. Ctrl + s, і сторінка оновиться, спричинивши потрапляння цієї точки перелому в першому рядку.

  5. F8, щоб продовжити, і тепер ваш щойно вставлений сценарій замінює оригінальний, доки не буде зроблено перенаправлення та перезавантаження.



0

Ви можете використовувати "Перекриття" в Chrome, щоб зберегти зміни в JavaScript між завантаженнями сторінок, навіть там, де ви не розміщуєте початкове джерело.

  1. Створіть папку в розділі Інструменти для розробників> Джерела> Заміна
  2. Chrome запитає дозволу на папку, натисніть Дозволити
  3. Відредагуйте файл у джерелах> Сторінка, а потім збережіть (ctrl-s). Фіолетова точка вказує, що файл зберігається локально.

Вкладка Перекриття в Інструментах для розробників Chrome

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.