Javascript 从Firefox扩展(Zotero translator)强制调试打印输出
使用Firefox28,在Ubuntu 11.04 GNU/Linux上安装Firebug 1.12.7 我正在使用Firefox插件Zotero4.0.17.1。作为安装的一部分,Zotero在Javascript 从Firefox扩展(Zotero translator)强制调试打印输出,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,使用Firefox28,在Ubuntu 11.04 GNU/Linux上安装Firebug 1.12.7 我正在使用Firefox插件Zotero4.0.17.1。作为安装的一部分,Zotero在firefox\u profile/Zotero/translators/中安装所谓的翻译器(JavaScript代码)。我想更改转换器中的一些内容(firefox\u profile/zotero/translators/BibTeX.js)。我使用它的方式是在Zotero首选项/导出/快速复制/默认
firefox\u profile/Zotero/translators/
中安装所谓的翻译器(JavaScript代码)。我想更改转换器中的一些内容(firefox\u profile/zotero/translators/BibTeX.js
)。我使用它的方式是在Zotero首选项/导出/快速复制/默认输出格式下拉列表中设置BibTex;然后,当我使用Ctrl+Shift+C并选中Zotero项目时,我会在剪贴板上得到一个bibtex格式的文本
我可以确认更改BibTeX.js
文件是否有效,因为我可以将新字段添加到fieldMap
,保存BibTeX.js
文件,然后在对某个项目使用Ctrl+Shift+C后立即(无需重新启动Firefox)将这些字段放入剪贴板。到目前为止,一切顺利
然而,我想调试一些东西——结果证明这是非常困难的;下面的帖子总结了我使用console.log()
的经验:
:
对于开发人员来说,这只是一个问题,我正在尝试找到登录javascript代码的正确方法,比如使用firebug console.log函数。我尝试了不同的方法,比如console.log、firebug.console.log、alert。。。没有人工作。
你通常怎么做 Zotero.debug() 现在,
Zotero.debug()
实际上需要启用:
BibTex.js
除了-这里是kicker-noZotero.debug
fromBibTex.js
存在!?无论是我在每个函数开始时尝试手动添加的那些;也没有那些已经存在于源代码中的代码出现?好的,源代码中的大多数Zotero.debug
s都在一些if
条件中,可能没有命中它们;然而,我添加的是在每个函数启动时-仍然没有打印消息?!(在这个调试输出中可以看到,比如说,精确地解析了BibTex.js
的初始JSON字符串,因此确定了正确的文件地址)
由此,我的第一个问题是:这个“翻译器”JavaScript在不同于普通扩展JavaScript的上下文中运行是否正确?如果是这样,这将解释为什么console.log()
(或console.error()
)无法打印任何内容
第二个问题:像这样从JavaScript文件打印任何类型的调试,我需要什么选项?似乎我无法从那里调用window.alert()
。。。如果在Zotero调试输出日志或Firefox“浏览器控制台”(据我所知,它取代了扩展JavaScript消息的旧“错误控制台”)中无法获得任何信息,我甚至会写入文件
(我也尝试过firefox-zoterodebug
,它只是在终端的stdout上提供相同的Zotero调试输出,而BibTex.js
消息仍然缺失,因此这不是解决方案……)
非常感谢您的回答,干杯 好的,明白了-原来,
BibTex.js
有两种执行模式:
->doExport()
,buildCiteKey()
writeField()
->doImport()
->beginRecord()
processField()李>
processField
,但我只是通过Ctrl+Shift+C触发了doExport
,这不会触发processField
,这是一个导入函数。。。现在,我尝试只在doExport
路径中记录函数,它们开始显示在日志中
但是学习一下还是很好的——为什么JavaScript不能在这个扩展代码中登录到Firefox控制台?你不能使用console.log吗 只需执行
console.log('我现在正在转储一个对象=',obj)
然后在浏览器控制台中,当你点击“obj”链接时,它就会被打印出来
事实证明,如果在开始时添加了一个
Zotero.debug()
,并且将其放在函数buildCiteKey
中的第一位,那么Zotero.debug()将在BibTex.js
中工作;不确定这是否意味着像getFieldValue()
这样的函数没有启动??转换器是在沙盒环境中执行的,并不是每个函数都可用。您应该使用Zotero.debug
来记录消息。