Как отлаживать динамически загруженный JavaScript (с jQuery) в самом отладчике браузера?
Динамически добавленный script не отображается в разделе сценариев отладчика браузера.
Пояснение:
Мне нужно использовать и использовать
if( someCondition == true ){
$.getScript("myScirpt.js", function() {
alert('Load Complete');
myFunction();
});
}
так что myScript.js может быть динамически загружен при выполнении некоторых условий...
И myFunction можно вызвать только после загрузки всего script...
Но браузеры не отображают динамически загруженные myScript.js в разделе отладчика script.
Есть ли другой способ, чтобы все цели могли быть достигнуты, что позволит отлаживать динамически загруженный script в самом браузере?
Ответы
Ответ 1
Я попытался использовать "//# sourceURL = filename.js", который был предложен в качестве обходного пути OP, но он все еще не отображался для меня в панели "Источники", если он уже не существовал на моих вкладках из предыдущее время, когда оно создало исключение.
кодирование "отладчика"; линия заставила его сломаться в этом месте. Затем, когда это было в моих вкладках на панели "Источники", я мог бы установить точки останова, как обычно, и удалить "отладчик"; линия.
Ответ 2
Вы можете указать динамически загруженное имя script, чтобы оно отображалось в отладчике Chrome/Firefox JavaScript. Для этого вы помещаете комментарий в конце script:
//# sourceURL=filename.js
Этот файл будет отображаться на вкладке "Источники" как filename.js
. По моему опыту вы можете использовать\в имени, но я получаю странное поведение, если использую /.s.
Для получения дополнительной информации см.
Точки останова в динамическом JavaScript
обесценение//@sourceurl
Ответ 3
Вы можете использовать //# sourceURL=
и //# sourceMappingURL=
в конце вашего файла script или тега script.
ПРИМЕЧАНИЕ. //@ sourceURL
и //@ sourceMappingURL
устарели.
Ответ 4
Обратите внимание, что исходный файл, отображаемый на вкладке источников таким образом, появится в группе (без домена), и если вы хотите отладить его, вам нужно будет добавить debugger;
(в начале выполнения вашего исходного файла), а затем добавьте точки останова, где бы вы ни хотели.
Если вы отлаживаете этапы производства, где у вас, вероятно, не будет строк debugger;
в вашем коде, вы можете сделать это, выполнив локальную карту с CharlesProxy на "новую копию исходного файла с помощью строки debbuger вставлен".
Ответ 5
Пытаясь отследить подобные вещи в IE, я открываю инструменты разработчика (F12) и затем нахожу, где разместить точку останова, используя следующую строку в консоли:
debugger;myFunction();
Это переключается на вкладку отладчика, где вы можете перейти в myFunction()
и установить точку останова.