Strumento di sviluppo di Chrome: file da javascript

Ho aggiunto un punto di interruzione nel mio file javascript (jaydata.js) e ho premuto “Passa alla prossima chiamata di funzione”. Quando arrivò a una linea che era:

}, 

un altro file intitolato “[VM] (8312)” è comparso. Ho continuato a fare clic su “Passaggio alla prossima chiamata di funzione” e ora il mio schermo è:

inserisci la descrizione dell'immagine qui

Quali sono questi script strani e misteriosi intitolati “[VM] (XXXX” e da dove vengono?

[VM] (scriptId) non ha significato speciale. È un nome fittizio per aiutarci a distinguere i codici che non sono direttamente legati al nome di un file, come il codice creato usando eval e gli amici.

In passato, tutti questi script erano appena etichettati (program) .

Se sei interessato, basta cercare "[VM]" nel codice sorgente di Chromium , scoprirai che questi numeri non hanno alcun significato significativo al di fuori degli strumenti di sviluppo.

aggiornamento 2015-06-25

[VM] (scriptId) stato rinominato VMscriptId qualche tempo fa , e qui è il collegamento diretto al risultato della ricerca nel caso in cui il valore cambi nuovamente.

Quando si utilizza eval, la javascript viene lanciata nelle macchine virtuali di Chrome Debugger. Per visualizzare js creati con eval in Sorgenti di debug di Chrome, imposta questo attributo alla fine (grazie a Splaktar) di js:

 //@ sourceURL=dynamicScript.js 

È ansible eseguire il debug del caricamento dinamico di JavaScript da parte di alcuni debugger come WebKit, FireBug o IE8 Developer Tool?

Ogni volta che carichi contenuti HTML tramite AJAX e quel contenuto contiene tag , lo script verrà valutato utilizzando eval () e riconosciuto dalla vista Sorgenti di Chrome come un nuovo file che inizia con "VM". Puoi sempre andare alla scheda Rete, trovare la richiesta AJAX e visualizzare la risposta HTML nella sua interezza, incluso lo script.

Ho trovato che VM viene generata da alcune estensioni di Chrome: inseriscono CSS / JS nella pagina e Chrome utilizza i file VM per eseguirlo.

Quando esegui il debug di una sorgente child (iframe) che viene successivamente scaricata, il tuo file sorgente otterrà anche il prefisso VM e lo sfondo giallo.

Ho incontrato lo stesso problema. Il problema è che il codice della mia app è stato considerato blackbox per sbaglio. Quando ho provato ad entrare nel codice, continuava ad aprire queste tabs VMXXXX .

Dopo aver rimosso le impostazioni della blackbox per il file js della mia app, ho potuto eseguire correttamente il mio codice.

Ho avuto lo stesso problema quando stavo eseguendo il debug della mia applicazione angular. Vedere troppi script VM che non potevano essere blackbox richiedevano davvero molto tempo per il debug. Preferisco scegliere mozilla / IE explorer per eseguire il debug.

Se si desidera eseguire il debug di file JS con iniezione programmata in chrome, è ansible utilizzare il debugger; dichiarazione, questo è più veloce di trovare dove è lo script e anche più veloce di generare un file con sourceurl .

Funziona come un punto di interruzione e automaticamente identifica il codice nella scheda sorgente di Chrome ovunque si usi il debugger; dichiarazione.

Debugger;

Si noti che l’origine dello script è un file VMXXX.