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

时间:2010-12-07 10:17:33

标签: 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"
}

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:2)

this thread。 (不完全相同,但相关)。

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

var myLogStr='';

function myLog(str)
{
  if(console) console.log(str);
  myLogString+=str+'\n';
}

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

<强>更新

Firebug also offers some events that you can hook into,它可以提供拦截错误的方法等。