Chrome 扩展:获取当前控制台以发送到服务器

Posted

技术标签:

【中文标题】Chrome 扩展:获取当前控制台以发送到服务器【英文标题】:Chrome Extensions: Get Current Console to Send Up to Server 【发布时间】:2011-12-22 08:20:30 【问题描述】:

是否可以通过任何形式获取控制台的当前输出?

例如,如果每当用户机器上的测试失败时,我可以调用如下代码:

console.trace()
output = console.dump()
$.post("https://<myserver>/debug/logs",  "console" : output  );

它将包装当前的控制台输出并将其发送到服务器。

在更一般的意义上,我想包含一个按钮来提交错误报告,并希望每个错误报告都包含尽可能多的上下文数据。

完全披露:我知道我可以避免调用console.log(),而是调用我自己的专用日志记录函数来存储/上传错误日志。我包含了console.trace() 行来说明为什么这个中间步骤解决方案不理想,但最终我不想这样做的原因是因为我正在构建一个可以立即在任何扩展中使用的通用调试模块(因此使用console.logconsole.error 的普通开发人员将能够插入一两行来设置远程调试)。

【问题讨论】:

【参考方案1】:

我认为这在 Chrome 中是不可能的。您可以使用方便的console.dir() 命令查看控制台可用的功能。我没有看到任何可以从控制台获取任何文本的内容。

你会得到这样的列表:

console.dir(console)

【讨论】:

是的,在问这个问题之前我已经了解了这些功能。不幸的是,这个功能没有公开。我将检查 Chromium 源代码,但我可能只需要破解控制台周围的包装器并将我的包装器附加到窗口。 好的,所以在检查了源代码之后,现在没有办法做到这一点。 code.google.com/chrome/extensions/trunk/… 最终应该可以实现(假设他们曾经将其升级为实验性版本)。 感谢您的研究,我也想拥有该功能 - 您想出任何解决方法吗? 顺便说一句,也许这对你有帮助(在我的特殊情况下它对我没有帮助):chromium.org/for-testers/enable-logging @Stefan 看起来现在可以使用developer.chrome.com/extensions/debugger.html 进行扩展。

以上是关于Chrome 扩展:获取当前控制台以发送到服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 chrome.tabs.getCurrent 在 Chrome 扩展程序中获取页面对象?

Chrome扩展程序获取功能不会发送Cookie

Chrome 扩展 ajax 发送格式错误的重音字符

收集控 | 国内Chrome扩展下载网站汇总

尝试将数组从内容脚本发送到弹出脚本的 Chrome 扩展程序错误

从网页向 chrome 扩展发送消息