2013-04-13 87 views
3

Mozilla文档(https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/console.html)说我应该使用console.log来从扩展中生成消息。据说这些消息出现在Firefox错误控制台中。但对我来说情况并非如此。我今天第一次使用插件构建器,并且我想创建一个可以切换特定事件选项卡的扩展。这些选项卡确实是切换的,并且是我期望的选项卡,所以我的代码肯定会运行。但console.log输出无处可见。从Firefox插件登录控制台

我已将过滤器设置为“全部”。我看到的只是插件生成器本身的CSS警告。

我也安装了Firebug。它也没有显示任何内容。 (当从网页的上下文中使用console.log时,这工作正常)。Firebug的问题在于它只能启用一个/一些标签,所以当切换标签时,它是没用的。我需要一个始终存在的日志窗口。

那么console.log的输出会在哪里结束呢?

+0

是否使用控制台从Firefox- >对于Web开发人员 - >错误控制台(Ctrl + Shift + J)? –

+0

是的,完全相同的热键。直接来自Firefox的那个,一直都在那里。 – ygoe

回答

8

继续并在您的插件main()中进行测试console.log("something");

如果在错误控制台('消息'选项卡)中没有显示任何内容,则可能Firefox未配置为显示console.log(最近发生在jetpack sdk 1.14中)。详情请参阅:Changes to console.log behaviour in SDK 1.14

快速和肮脏的总结:about:config设置extensions.sdk.console.logLevel"all"

虽然从你的问题:

我已经设置了过滤器 “全部”。

......这听起来像你已经意识到这一点。所以你不完全清楚你的意思。

+1

我只设置了错误日志窗口中可用按钮的过滤器,而不是隐藏设置。但是从你引用的文章来看,新的默认值是“error”,它只打印对console.error()的调用。我改变了我的电话,现在它们出现在日志窗口中(作为错误消息)。但是这样做的好处是我可以过滤掉附加组件生成器本身的所有警告,所以使用错误级别来实现我的调试消息非常有用。 – ygoe

+0

在一个看似相关的说明中,附加SDK 1.14的升级似乎已'断开'(或停止)alert()' – Lori

+0

我甚至不敢尝试从chrome上下文中的alert。 ;-) – ygoe

2

只是为了完整性:在自举,非基于SDK-插件,我不得不这两行bootstrap.js加有一个伪造的console.log():

var aConsoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService); 
var console = {log:function(str){aConsoleService.logStringMessage(str);}} 

可以进来方便别人,我猜..

+0

引用来自[这里](http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/) - “在Webkit浏览器中,控制台是内置的,控制台属性始终可用,Firefox控制台依赖于正在安装并打开的Firebug(或其他附加组件),IE7没有控制台,IE8有控制台,但只有当IE Developer Tools启动时,控制台属性才存在。 – user3526

4

而不是做var aConsoleService = Cc...的只是坚持在下面,你可以用一切:

Cu.import('resource://gre/modules/devtools/Console.jsm'); 

现在可以做什么,console.log('blah')console.time('rawr')console.endTime('rawr'),等等等等

+1

'Cu.import'确实有效吗?我使用的例子是'Components.utils.import' – dbreaux

+2

@dbreaux通常devs会这样做:'Cu'被定义为'Components.utils':const {interfaces:Ci,utils:Cu,classes:Cc} =组件;'和addon-sdk他们去:'var {Cu,Ci,Cc} = require('chrome');'' – Noitidart