【问题标题】:Can you programmatically access the Firebug console output?您可以以编程方式访问 Firebug 控制台输出吗?
【发布时间】:2011-05-21 12:06:10
【问题描述】:

是否可以通过编程方式访问先前记录的 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"
}

【问题讨论】:

    标签: javascript console firebug


    【解决方案1】:

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

    我可能对这方面的细节有误,因为我只是粗略地查看了 Firebug 源代码,并且很少进行 Firefox 插件开发,但我认为这大体上是正确的。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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,可能提供拦截错误等的方法。

        【讨论】:

        • 大声笑...我没有注意到这一点。我在那个线程上为你投票。不过,我认为值得在 Firebug 列表上打开一个问题,或者在运行 FireBug 的情况下探索 DOM 以找到控制台对象的内部结构。捕获错误输出等会很好。
        • 链接已失效
        • @Sebas 这是在我意识到应该将相关内容粘贴到答案之前。我看看能不能找到缓存的版本。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 2022-07-04
        • 1970-01-01
        相关资源
        最近更新 更多