【问题标题】:Chrome Console: VMChrome 控制台:虚拟机
【发布时间】:2013-12-21 17:14:39
【问题描述】:

在 Chrome 中直接在控制台中执行脚本时,我看到了这个:

有谁知道VM117:2是什么意思

VM 代表什么?

【问题讨论】:

  • 有没有办法删除它/禁用打印它?通常对我来说完全没用。我只想从控制台复制链接或数据,主要是记录的 XHR。
  • @computingfreak 这是一个在黑暗中的镜头,因为评论线程太老了,但你设法弄清楚如何禁用它吗?每次加载页面时,我都会打印 20 多次,这让我抓狂!
  • @MRB 我找到了一个解决方案,添加为这个问题的答案 - 请查看stackoverflow.com/a/67026569/1818089
  • @MRB 不确​​定我的答案是否会保留,请参阅stackoverflow.com/questions/36009071/…,并以某种方式确认。

标签: google-chrome google-chrome-devtools


【解决方案1】:

它是短语 Virtual Machine 的缩写。 在 Chrome JavaScript 引擎(称为 V8)中,每个脚本都有自己的脚本 ID。

有时 V8 没有关于脚本文件名的信息,例如在 eval 的情况下。因此 devtools 使用与脚本 ID 连接的文本“VM”作为这些脚本的标题。

一些网站可能会通过 XHR 和eval 获取许多 JavaScript 代码。如果开发人员想查看这些脚本的实际脚本名称,她可以使用sourceURL。 DevTools 解析并将其用于标题、映射等。

【讨论】:

  • 这方面有参考吗?
【解决方案2】:

感谢@MRB,

我重新审视了这个问题,今天找到了解决方案, 感谢https://stackoverflow.com/a/63221101/1818089

queueMicrotask (console.log.bind (console, "Look! No source file info..."));

它将相似的元素分组,因此请确保为每个日志行添加一个唯一标识符,以便能够查看所有数据。

在以下示例中演示。

代替

data = ["Apple","Mango","Grapes"];
for(i=0;i<10;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

使用

data = ["Apple","Mango","Grapes"];
for(i=0;i<data.length;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

更好的方法是创建一个执行此操作的 console.print 函数并调用它而不是 https://stackoverflow.com/a/64444083/1818089 中指出的 console.log

// console.print: console.log without filename/line number
console.print = function (...args) {
    queueMicrotask (console.log.bind (console, ...args));
}

注意上面提到的分组问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2014-06-17
    • 2022-12-09
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多