从Firefox扩展强制调试打印输出(Zotero转换器)

时间:2014-03-18 18:42:05

标签: javascript firefox firefox-addon

使用Firefox 28,在Ubuntu 11.04 GNU / Linux上使用Firebug 1.12.7

我正在使用Firefox附加组件Zotero 4.0.17.1。作为其安装的一部分,Zotero在firefox_profile/zotero/translators/中安装了所谓的翻译器(JavaScript代码)。我想在BibTeX.js翻译器(firefox_profile/zotero/translators/BibTeX.js)中更改一些内容。我使用它的方式是在Zotero首选项/导出/快速复制/默认输出格式下拉列表中设置BibTex;然后当我使用Ctrl + Shift + C选择Zotero项目时,我在剪贴板上得到一个bibtex格式的文本。

我可以确认更改BibTeX.js文件是否有效,因为我可以向fieldMap添加新字段,保存BibTeX.js文件,然后立即(不需要重启Firefox)这些结束在项目上使用Ctrl + Shift + C后,在剪贴板中。到现在为止还挺好。

然而,我想调试一些东西 - 结果证明是非常困难的;以下帖子总结了我对console.log()

的体验

Zotero Forums - Developing Site Translator

  
    

对开发人员来说只是一个问题,我正在尝试找到登录javascript代码的正确方法,例如使用firebug console.log函数。
    我尝试了不同的方式,比如console.log,firebug.console.log,alert,......没有人工作     你通常怎么做?

  
     

Zotero.debug()

现在,Zotero.debug()实际上需要启用:

debug_output [Zotero Documentation]

  
      
  1. 打开Zotero首选项的“高级”面板。 ......
  2.   
  3. 单击“调试输出日志记录”下的“启用”
  4.   

我做到了,然后我可以在Preferences开始填充中看到“0行记录”条目,然后我可以单击View Output - 实际上,当我单击Ctrl + Shift时,有一些Zotero调试消息项目上的+ C,从而触发BibTex.js

除了 - 这里是踢球者 - 来自 Zotero.debug没有 BibTex.js !那些我试图在每个功能的开始时手动添加的东西; 源代码中已经出现的那些?好的,源中的大多数Zotero.debug都在一些if条件内,并且可能没有一个被击中;但是,我添加的是每个功能的开始 - 仍然没有打印消息?! (并且它在此调试输出中可见,例如,解析了精确BibTex.js的初始JSON字符串,因此正确地解决了正确的文件)。

由此,我的第一个问题是:这个“翻译”JavaScript是否运行在与通常的扩展JavaScript不同的上下文中?如果是这样,那就可以解释为什么console.log()(或console.error())无法打印任何内容......

第二个问题:我有哪些选项可以从这样的JavaScript文件中打印任何类型的 调试?我似乎无法从那里调用window.alert() ...如果我无法在Zotero调试输出日志中获取任何内容,也无法在Firefox“浏览器控制台”(我明白替换)中写入文件用于扩展JavaScript消息的旧“错误控制台”)。

(我也试过firefox -zoterodebug - 只是在终端的标准输出上提供了相同的Zotero调试输出,BibTex.js消息仍然缺失,所以这不是解决方案...... )

非常感谢任何答案,
干杯!

2 个答案:

答案 0 :(得分:0)

好的,明白了 - 事实证明,BibTex.js有两种执行方式:

  • doExport() - > buildCiteKey()writeField()
  • doImport() - > beginRecord() - > processField() ...

我试图记录,比如processField,但我只是通过Ctrl + Shift + C触发doExport - 它不会触发processField,它是一个导入功能...现在,我尝试仅记录doExport路径中的函数,它们开始在日志中显示...

但是学习仍然很好 - 为什么不能在这个扩展代码中使用JavaScript,登录到Firefox控制台?

答案 1 :(得分:0)

你能不能使用console.log?

只需console.log('i am now dumping an object = ',obj)

然后在浏览器控制台中,单击" obj"链接。

How to access .log .info. warn functions from Services.console