Google chrome 扩展:是不是可以获得控制台输出(js 错误、console.log 等)

Posted

技术标签:

【中文标题】Google chrome 扩展:是不是可以获得控制台输出(js 错误、console.log 等)【英文标题】:Google chrome extension : is it possible to get console output (js errors, console.log or etc)Google chrome 扩展:是否可以获得控制台输出(js 错误、console.log 等) 【发布时间】:2012-10-12 09:17:16 【问题描述】:

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

是否有可能在 chrome 扩展 popup.html/popup.js 或某处获得这些?

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

【问题讨论】:

您的意思是要捕获任何会输出到控制台的错误,然后将它们打印到屏幕上? 当我按下扩展按钮(与打开扩展 popup.html / popup.js 时相同)时,我想获得完整的控制台输出,并对其进行操作、计数错误、计数警告、解析以某种方式输出,然后在弹出的html中显示。 但是它并不关心我将做什么和如何做,因为我自己不确定,但首先我需要得到输出/控制台/日志/错误或任何我们应该称之为的代码中的对象:) ps感谢您的帮助:) 现在应该可以了吧? 【参考方案1】:

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

【讨论】:

console 对象的原型上没有 dump() Uncaught TypeError: Object # has no method 'dump' 所以它似乎只是一个测试版命令,或者它只能从网页中获得。 我不确定,但在所有代码范围内都尝试了这个,但似乎不起作用。不过还是谢谢你的回答。 如果你运行console.log(console.__proto__),你会看到控制台对象没有这个功能。【参考方案2】:

在您的 popup.js 文件中,您可以使用 console.log("stuff") 然后右键单击您的扩展并转到调试器或 inspect_element -> 控制台,查看输出。

从您的背景文件中,您需要执行以下操作:

popup = chrome.extension.getViews('popup'); // this returns an array

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

然后只需执行与上述相同的步骤即可。

有关视图之间交互的更多信息,请参阅:api get views,请参阅:another way to interact between pages.

【讨论】:

完全不是我想要的 :) 但还是谢谢。我需要的是在代码中以对象或字符串的形式获取输出,而不仅仅是我自己查看它:) 谢谢 如果您 console.log(tab) 并且 tab 是一个对象,它将显示该对象中包含的所有内容。如果您的选项卡对象具有属性 tab.error 并且您使用 console.log(tab.error) ,那么它将向您显示错误。否则我不知道你在做什么,因为一切都是javascript中的对象。 javascript 不是“类型化”语言。当你声明一个 var 时,你就真正声明了一个对象,不管你在里面放了什么。 console.log(tab) 没有与控制台相应的任何对象,控制台是 chrome api 中的一个附加开发工具,我需要以某种方式与该开发工具对话并将其作为当前选项卡的对象输出。它没有 tab.error 对象。 感谢您的澄清。但是我在对象和输出之间的误导性解释不会影响问题,我需要为代码中的特定选项卡获取控制台输出对象。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

Chrome Extemsion 中有三个 JavaScript 上下文: 内容脚本、背景脚本和弹出窗口。 在每个代码上下文中,您都可以使用 console.log()。 IE console.log("I am here");

var tempObject = 'one': 'v_one', 'two', 'v_two';

console.log(tempObject);

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

【讨论】:

以上是关于Google chrome 扩展:是不是可以获得控制台输出(js 错误、console.log 等)的主要内容,如果未能解决你的问题,请参考以下文章

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

Yandex 浏览器是不是支持 google chrome 网上商店的付费扩展程序运行?

如何检测 Chrome 中是不是安装了 Google Cast 扩展程序?

我的 google-chrome 扩展是不是有一个 chrome.* API 来找出它在哪些页面上被禁止编写脚本?

我可以使用 python 开发 Google Chrome 扩展吗? [复制]

如何在 Chrome 扩展程序 browser_action 中登录 Google?