您能以编程方式访问Firebug控制台输出吗?

nic*_*ckf 15 javascript console firebug

是否可以通过编程方式访问以前记录的Firebug输出?

例如:

console.log('a');
console.log('b');
console.log('c');

for (var i = 0; i < console.output.length; ++i) {
    alert(console.output[i]);  // "a", "b", "c"
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*own 5

没有包装window.console自己,我不相信这是可能的.查看源代码,似乎当console调用Firebug的方法(在主文档中运行并因此没有特殊权限)时,它会在主文档中留下一些对象,然后引发自定义事件.在特权插件中运行的Firebug侦听器拾取事件,吞噬文档中剩余的对象并向控制台面板添加适当的内容,控制台面板是浏览器镶边的一部分,因此在主要运行的JavaScript中无法访问窗口.

关于这个细节我可能是错的,因为我只是粗略地看一下Firebug源并完成了很少的Firefox插件开发,但我认为这是大致正确的.


seb*_*eli 5

Paul Irish为console.log创建了一个包装器,可以解决你的问题,看看这里


3Da*_*ave 2

请参阅此线程。(不完全重复,但相关)。

我还没有找到读取控制台输出的方法,但如果您感兴趣的是捕获 ::log() 消息,您可以覆盖 .log() 方法,或者创建自己的方法来写入日志向另一个容器发送消息,然后调用 .log()。

var myLogStr='';

function myLog(str)
{
  if(console) console.log(str);
  myLogString+=str+'\n';
}
Run Code Online (Sandbox Code Playgroud)

当然,所有 Firebug 对象(控制台等)都存在于 DOM 中,因此您可以追踪控制台窗口的 ID 并直接检索内容。

更新

Firebug 还提供了一些可以挂钩的事件,这可能提供拦截错误等的方法。