2010-12-07 78 views

回答

2

参见this thread。 (不完全重复,但相关)。

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

var myLogStr=''; 

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

当然,所有的萤火虫对象(控制台等)的存在于DOM,所以你可以跟踪控制台窗口的ID和直接获取内容。

更新

Firebug also offers some events that you can hook into,它可以提供一种方式来拦截错误等

+3

哦讽刺 - 我写了一篇关于这个问题,得票最多的答案... – nickf 2010-12-07 10:39:03

5

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

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

5

保罗爱尔兰创造了应该解决您的问题的console.log的包装,看看here

相关问题