web-dev-qa-db-fra.com

Outil de développement Chrome: fichier [VM] de javascript

J'ai ajouté un point d'arrêt dans mon fichier javascript (jaydata.js) et j'appuyais sur "Passage à l'appel de fonction suivant".

},

un autre fichier intitulé "[VM] (8312)" est apparu. Je n'arrêtais pas de cliquer sur "Passer au prochain appel de fonction" et maintenant mon écran est:

enter image description here

Quels sont ces scripts étranges et mystérieux intitulés "[VM] (XXXX") et d'où viennent-ils?

118
AllieCat

[VM] (scriptId) n'a pas de signification particulière. C'est un nom factice qui nous aide à distinguer le code qui n'est pas directement lié à un nom de fichier, tel que le code créé à l'aide de eval et d'amis.

Dans le passé, tous ces scripts étaient simplement étiquetés (program).

Si cela vous intéresse, il vous suffit de rechercher "[VM]"dans le code source de Chromium pour découvrir que ces chiffres n'ont pas de signification significative en dehors des outils de développement.

mise à jour 2015-06-25

[VM] (scriptId) a été renommé VMscriptIdil y a quelque temps , et voici le lien direct vers le résultat de la recherche au cas où la valeur changerait à nouveau.

91
Rob W

Lorsque vous chargez du contenu HTML via AJAX et que celui-ci contient des balises <script>, le script sera évalué à l'aide de eval () et reconnu par la vue Sources de Chrome comme un nouveau fichier commençant par "VM". Vous pouvez toujours accéder à l'onglet Réseau, rechercher la demande AJAX et afficher la réponse HTML dans son intégralité, y compris votre script.

34
Sam Kauffman

Lors de l’utilisation de eval, le javascript est lancé dans les machines virtuelles Chrome Debugger. Pour afficher les fichiers js créés avec eval sous Chrome Debugger Sources, définissez cet attribut à la fin (merci Splaktar) du fichier js:

//@ sourceURL=dynamicScript.js

Est-il possible de déboguer le chargement dynamique de JavaScript par un débogueur comme WebKit, FireBug ou IE8 Developer Tool?

32
Sully

J'ai trouvé VM est généré à partir de certaines extensions de Chrome. Ils insèrent CSS/JS dans la page et Chrome utilise les fichiers VM pour l'exécuter.

4
Piers

Si vous souhaitez déboguer des fichiers JS injectés par programme en chrome, vous pouvez utiliser l'instruction debugger; , ce qui est plus rapide que de localiser votre script et plus rapide que de générer un fichier avec sourceurl .

Cela fonctionne comme un point d'arrêt et repère automatiquement votre code dans l'onglet source chromé partout où vous utilisez l'instruction debugger;.

 Debugger;

Notez que la source du script est un fichier VMXXX.

1
Rodrirokr

J'ai rencontré le même problème. Le problème est que le code de mon application a été considéré par inadvertance comme une boîte noire. Lorsque j'ai essayé d'entrer dans le code, il a continué à ouvrir ces onglets VMXXXX.

Après avoir supprimé le paramètre de boîte noire pour le fichier js de mon application, je pouvais parcourir le code avec succès.

0
Justin Noel

Lorsque vous déboguez une source de fenêtre enfant (iframe) qui est par la suite déchargée, votre fichier source aura également le préfixe VM et le fond jaune.

0
JosdeHa

Le @sourceURL vous permet de rendre le développement beaucoup plus facile lorsque vous travaillez avec evals.

En incluant le commentaire spécial suivant dans votre code, qui sera évalué, vous pouvez nommer les styles et les scripts et styles inline afin qu'ils apparaissent sous la forme de noms plus logiques dans vos outils DevTools.

//# sourceURL=someName

Plus d'informations ici - https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps#sourceurl_and_displayname

0
yoAlex5