Chrome开发工具:来自JavaScript的文件

我在我的JavaScript文件(jaydata.js)中添加了一个断点,并按下“跳到下一个函数调用”。 当它达到一条线是:

}, 

另一个名为“[VM](8312)”的文件popup。 我继续点击“跳到下一个函数调用”,现在我的屏幕是:

在这里输入图像说明

这些奇怪而神秘的脚本是什么?“(VMX)(XXXX),它们来自哪里?

[VM] (scriptId)没有特别的意义。 这是一个虚拟的名字,可以帮助我们区分与文件名无关的代码,例如使用eval和朋友创build的代码。

过去,所有这些脚本都被贴上标签(program)

如果你有兴趣,只要在Chromium的源代码中查找"[VM]" ,你会发现这些数字在开发工具之外没有什么重要的意义。

在使用eval时,javascript会被抛入Chromedebugging器虚拟机。 为了查看在Chrome Debugger Sources下用eval创build的js,在js结尾(感谢Splaktar)设置这个属性:

 //@ sourceURL=dynamicScript.js 

有可能通过一些debugging器,如WebKit,FireBug或IE8开发工具debuggingdynamic加载JavaScript?

无论何时通过AJAX加载HTML内容,并且该内容包含<script>标记,该脚本将使用eval()进行评估,并由Chrome的Sources视图将其识别为以“VM”开头的新文件。 您可以随时访问“networking”选项卡,查找AJAX请求,并查看整个HTML响应,包括您的脚本。

我发现虚拟机是通过一些Chrome扩展生成的 – 它们将CSS / JS插入到页面中,Chrome使用虚拟机文件来运行它。

当你正在debugging后来卸载的子窗口(iframe)源时,你的源文件也将获得VM前缀和黄色背景。