对于我正在进行的其中一个项目,我必须使用DOM Inspector来调试Firefox扩展。
DOM检查器的问题在于它只向您显示代码下方的浏览器,无法分离浏览器或并排出代码部分或浏览器。
它对我不起作用,因为我正在调试的插件有一个大的xul叠加层,问题区域位于底部,所以没有物理方法可以看到该区域的代码以及区域本身。
所以我决定修改DOM Inspector本身,将浏览器放在代码编辑器的旁边。
以下是我采取的步骤:
inspector.jar
jar -xf <filename>
inspectorOverlay.xul
并将<vbox id="bxInspectorMain">
更改为hbox。 (这应该足以将这两个窗口水平放置。)jar cf
重新创建了jar文件。然而,当我尝试运行它时,我收到以下警告:
Warning: WARN addons.xpi: Add-on is invalid: [Exception... "Component returned failure code: 0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST) [nsIZipReader.getInputStream]" nsresult: "0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST)" location: "JS frame :: resource://gre/modules/XPIProvider.jsm :: loadManifestFromZipReader :: line 740" data: no]
Source File: resource://gre/modules/XPIProvider.jsm
Line: 740
Warning: WARN addons.xpi: Could not uninstall invalid item from locked install location
Source File: resource://gre/modules/XPIProvider.jsm
Line: 2042
我的问题是 - 我通常需要做些什么其他更改才能正确解释xpi?
答案 0 :(得分:6)
压缩目录,确保名称相同,并将扩展名更改回xpi。
我猜你在这一步做错了。查看source code,消息来自方法updateMetadata()
- Firefox注意到文件已更改并尝试再次读入install.rdf
。该文件应位于XPI文件的顶层,但在您的情况下无法找到。重新打包文件后,install.rdf
可能不再处于顶层。您可以使用unzip
命令对其进行测试:
unzip -l inspector@mozilla.org.xpi
它应该显示XPI文件的内容,包括install.rdf
和chrome.manifest
- 没有任何前置目录名。
答案 1 :(得分:3)
@Luka,我猜Wladimir Palant是对的。为了避免在修改现有项目的源代码时出错,我建议您在工作环境中工作。
修改源代码的建议方法:
通过这种方式,您可以避免任何类型的错误,因为所有内容都会自动归类(Chrome文件夹,清单,install.rdf,已死亡等)。
注意:有一种修改源代码的高级方法,FF浏览器会通过在FF扩展配置文件夹中设置环境来自动检测源代码的修改。