Подтвердить что ты не робот

Отладка нединамических script после динамической загрузки script на той же странице

Этот ответ qaru.site/info/19833/... на этот вопрос Можно отлаживать динамическую загрузку JavaScript некоторыми отладчиками, такими как WebKit, FireBug или IE8 Developer Tool? используется для отладки динамических скриптов.

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть страница с script на ней, и после этого загружается запрос ajax-запроса, который возвращается с некоторым HTML и script, которые попадают на страницу. С добавленным битом //# sourceURL=myDynamicDocumentFragment.html я могу отлаживать динамический script просто отлично.

Но после его загрузки другой script, который является частью внешней загруженной страницы, отключается от рельсов. Я могу установить точки останова на пустые строки и не могу установить их на законных линиях. Отладчик остановится на них, но он не будет в месте в коде, где я ожидаю.

Похоже, что в окне инструментов dev отображается исходный script, а сам отладчик работает на чем-то другом - некоторая обновленная версия кода, которая включает как внешнюю страницу script, так и динамическую script, который был добавлен позже. Или, может быть, это просто икота относительно номеров строк, которые она отображает, и того, что они отображают в коде, который он фактически запускает.

Я хочу, чтобы у меня был хороший простой фрагмент кода, чтобы продемонстрировать эту проблему, но я этого не делаю. Кто-нибудь видел это, и кто-нибудь знает, как "обновить" Chrome "скрипты/отладчики dev" без обновления страницы? (он не должен обновляться на странице, так как все работает нормально, когда страница загружается - это только после того, как динамический script отбрасывается, когда колеса оторвались)

Примечание. Я привязал Chrome к тому, что я использую (v 38). Я не знаю, как платят другие браузеры.

4b9b3361

Ответ 1

Вы можете найти сценарии, введенные в голову или оценивать, вот точка разрыва, добавленная в вычисляемый youtube (другой файл js).

Вы также можете найти это в chrome, добавив console.log(нажмите на сообщение, показанное), и у вас есть исходный код, который вы можете добавить точки останова.

Здесь mozila печатает отладочную/прерывательную точку над оценкой script на странице utube:

enter image description here

Обновление

Извините, я понимаю, что хром вышел из сферы действия, мой engrish:)

Как я отлаживал хром по инъецированным скриптам, но бывают случаи, когда вы не можете присоединяться к выполнению, если активен script (загрузка страницы плюс несколько миллисекунд), вам нужно искать обходные пути. Добавлено это при запуске script:

//@ sourceURL=jseinjectedsource.js
console.log("evaluated");

и консоль voila:

enter image description here

Лучше проверить этот способ лучше, чем мое объяснение chrome developer

Ответ 2

Проверьте, использует ли ваш script исходную карту (если вы используете TypeScript, это обычно по умолчанию для проектов VS). Я обнаружил, что Chrome действительно плохо работает с исходными картами, часто отказывается их обновлять или перестает отображать их после удаления строки исходного кода из кода.