Инструмент разработки Chrome: [VM] файл из javascript
Я добавил точку останова в свой файл javascript (jaydata.js) и нажимал "перейти к следующему вызову функции." Когда он добрался до строки, которая была:
},
появился еще один файл под названием "[VM] (8312)". Я продолжал нажимать "перейти к следующему вызову функции", и теперь мой экран:
что это за странные и таинственные скрипты под названием "[VM] (XXXX " и откуда они берутся?
8 ответов
[VM] (scriptId)
не имеет особого смысла. Это фиктивное имя, чтобы помочь нам отличить код, который непосредственно не привязан к имени файла, например, код, созданный с помощью eval
и друзей.
в прошлом, все эти сценарии были просто помечены (program)
.
Если вам интересно, просто посмотреть "[VM]"
в исходном коде Chromium, вы обнаружите, что эти цифры не имеют существенного значения вне инструменты разработчика.
обновление 2015-06-25
[VM] (scriptId)
была переименована в VMscriptId
некоторое время назад, а вот прямая ссылка на результат поиска в случае, если значение снова меняется.
при использовании eval javascript попадает в отладчик Chrome VMs. Чтобы просмотреть js, созданный с помощью eval в источниках отладчика Chrome, установите этот атрибут в конце (спасибо Splaktar) js:
//@ sourceURL=dynamicScript.js
всякий раз, когда вы загружаете HTML-контент через AJAX, и этот контент содержит <script>
теги, скрипт будет оценен с помощью eval () и распознан в представлении источников Chrome как новый файл, начинающийся с "VM". Вы всегда можете перейти на вкладку Сеть, найти запрос AJAX и просмотреть ответ HTML полностью, включая ваш скрипт.
Я обнаружил, что VM генерируется из некоторых расширений Chrome-они вставляют CSS / JS на страницу, и Chrome использует файлы VM для его запуска.
когда вы отлаживаете источник дочернего окна (iframe), который впоследствии выгружается, ваш исходный файл также получит префикс VM и желтый фон.
я столкнулся с такой же проблемой. Проблема в том, что код моего приложения был рассмотрен blackboxes случайно. Когда я попытался войти в код, он продолжал открывать эти VMXXXX
вкладки.
после удаления настройки blackbox для JS-файла моего приложения я мог бы успешно выполнить свой код.
Если вы хотите отлаживать программно введенные JS-файлы в chrome, вы можете использовать debugger;
заявление, это быстрее, чем найти, где ваш скрипт, а также быстрее, чем создание файла с sourceurl.
он работает как точка останова и автоматически определяет ваш код на вкладке источника chrome, где бы вы ни использовали debugger;
заявление.
обратите внимание, что источник сценарий VMXXX файл.
У меня была такая же проблема, когда я отлаживал свое угловое приложение. Видя слишком много сценариев VM, которые не могли быть blackboxed действительно занимает много времени для отладки. Я скорее выбрал mozilla / IE explorer для отладки.