是否有可能以编程方式访问以前记录的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"
}
是否有可能以编程方式访问以前记录的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"
}
参见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,它可以提供一种方式来拦截错误等
没有自己包裹window.console
,我不相信这是可能的。看看源代码,当调用Firebug的console
方法(在主文档中运行,因此没有特殊权限)被调用时,它会在主文档中留下一些对象,然后引发自定义事件。运行在特权插件域中的Firebug侦听器接收事件,吞噬文档中留下的对象,并向控制台面板添加适当的内容,该面板是浏览器镶边的一部分,因此无法在主要运行的JavaScript中访问窗口。
对于这个细节我可能是错的,因为我只是粗略地看了一下Firebug的源代码,做了很少的Firefox插件开发,但我认为这是大致正确的。
保罗爱尔兰创造了应该解决您的问题的console.log的包装,看看here
哦讽刺 - 我写了一篇关于这个问题,得票最多的答案... – nickf 2010-12-07 10:39:03