谷歌浏览器扩展:是否可以获取控制台输出(JS错误、console.log等)?

12

我正在开发chrome扩展程序,我需要的是将控制台输出作为对象获取。

在chrome扩展程序的popup.html/popup.js或其他地方获取这些输出是否可行?

我有一个选项卡对象,能否以某种方式获取特定选项卡的控制台输出,或者从chrome控制台的检查器/开发工具中获取错误输出作为代码中的对象?


你的意思是想捕获所有会输出到控制台的错误,并将它们打印到屏幕上吗? - Ryan
当我按下扩展按钮(与打开扩展popup.html / popup.js时相同)时,我希望获得完整的控制台输出,并对其进行操作,计算错误,计算警告,以某种方式解析输出,然后在弹出式HTML中显示它。 - XFaktor
但是无论我做什么和如何做,都不重要,因为我自己也不确定,但首先我需要在代码中获取输出/控制台/日志/错误或者我们应该称之为对象的东西 :) 附言:谢谢你的帮助 :) - XFaktor
现在应该已经可以了,对吧? - Ryan
4个回答

10

目前Google Chrome控制台无法获取控制台的输出内容。


未捕获的类型错误:对象#<Console>没有'dump'方法。 - XFaktor
我同意,但不应该是控制台应该有这个功能,而是Google Chrome API或扩展API/函数,例如:http://developer.chrome.com/extensions/devtools.inspectedWindow.html,它将允许从控制台获取内容。不应该是控制台做什么 :) - XFaktor
是的,但你为什么需要控制台输出?通常只是用于调试... - tobspr
我正在创建一个扩展程序,它应该解析/验证页面等等,因此我想获取控制台输出,以便能够计算其中的错误或以人类可读的方式将其显示给标准用户 :) - XFaktor
当然啦,但是我只是想也许可能有这种可能性,因为它本来就是一个扩展,最初的时候只是内置的那个。这很奇怪,因为 Chrome 自身在很多地方都使用这些错误和输出,而且很奇怪它不能在扩展中得到 :) 尽管如此,感谢你的交流 :) - XFaktor
显示剩余4条评论

0
在您的popup.js文件中,您可以直接使用console.log("stuff"),然后右键单击您的扩展并转到调试器或inspect_element ->控制台,以查看输出。
从您的背景文件中,您需要执行以下操作:
popup = chrome.extension.getViews('popup'); // this returns an array

popup[0].console.log("stuff");

然后只需按照上面的步骤进行即可。

请参阅:获取视图API 以了解有关视图之间交互的更多信息,这里还有:另一种页面交互方式。


完全不是我想要的 :) 但还是感谢。我需要的是将输出作为对象或字符串在代码中获取,而不仅仅是自己看到它 :) 谢谢。 - XFaktor
如果您使用console.log(tab)并且tab是一个对象,它将显示该对象中包含的所有内容。如果您的tab对象具有属性tab.error并且您使用console.log(tab.error),那么它将显示错误。否则,我不知道您的意思,因为在JavaScript中,一切都是对象。 - Ryan
JavaScript不是一种“类型化”语言。当你声明一个变量时,实际上是在声明一个对象,无论你在其中放了什么。 - Ryan
console.log(tab)根据控制台没有任何对象,控制台是Chrome API中的一个附加开发工具,我需要以某种方式与该开发工具通信,并获得当前选项卡的输出作为对象。它没有tab.error对象。 - XFaktor
谢谢澄清。但是我的关于对象和输出的误导性解释并不影响问题,我需要在代码中获取特定选项卡的控制台输出对象。 - XFaktor

0

似乎有一种方法可以在扩展中获取控制台输出,但需要使用特殊标志启动Chrome并为扩展程序提供额外的文件读取权限。

  1. 这个 SO Answer 显示了如何通过使用 --enable-logging --v=1 启动Chrome,将包括 console.log() 字符串在内的所有Chrome操作保存在本地文件中。
  2. 然后这个 SO Answer 显示了扩展程序如何读取该本地文件。

-3
Chrome扩展中有三个JavaScript上下文: 内容脚本、后台脚本和弹出窗口。 在每个代码上下文中,您都可以使用console.log()。 例如: console.log("我在这里");
var tempObject = {'one': 'v_one', 'two', 'v_two'};

console.log(tempObject);

注意:输出仅在您提到console.log('Hello');代码上下文中可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接