我是 Firefox 扩展开发的新手。所以我一直在做一些实验。我目前正在尝试创建一个引导扩展,除了最低要求之外别无其他:只有 install.rdf 和 bootstrap.js。目前,这个扩展实际上不应该做任何事情。我只希望能够安装它而没有任何问题。该功能可以稍后添加。
install.rdf 和 bootstrap.js 已经被打包成一个 7zip 的 .zip 文件,然后文件扩展名被更改为 .xpi。安装是通过插件管理器完成的,似乎在我的 Firefox 42.0 中运行良好(Firefox 给我一条成功消息)。
但是如果我在安装后查看错误控制台,它会显示几个警告/错误:
1447258032068 addons.xpi WARN 为 Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org 加载 bootstrap.js 时出错:打开输入流时出错(文件名无效?):jar:file:///C:/用户/Stefan/AppData/Roaming/Mozilla/Firefox/Profiles/dlgniy94.default/extensions/Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org.xpi!/bootstrap.js
1447258032068 addons.xpi WARN 附加组件 Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org 缺少引导方法卸载
1447258032080 addons.xpi WARN 为 Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org 加载 bootstrap.js 时出错:打开输入流时出错(文件名无效?):jar:file:///C:/用户/Stefan/AppData/Roaming/Mozilla/Firefox/Profiles/dlgniy94.default/extensions/Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org.xpi!/bootstrap.js
1447258032080 addons.xpi WARN 附加组件 Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org 缺少引导方法安装
Zeitstempel:11.11.2015 17:07:12 Fehler:[异常...“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsIURI.hostPort]”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS 框架 :: 资源: //gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< :: line 579" data: no] Quelldatei: resource://gre/modules/PopupNotifications.jsm Zeile: 583
1447258032112 addons.xpi WARN 附加组件 Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org 缺少引导方法启动
我不知道是什么导致了这些错误/警告。尤其是据称缺少的引导方法令人费解。
这是我的 bootstrap.js 的内容:
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import('resource://gre/modules/Services.jsm');
function startup(aData, aReason) {}
function shutdown(aData, aReason) {}
function install(aData, aReason) {}
function uninstall(aData, aReason) {}
数量不多,但应该是所需的一切,不是吗?所有四个必需的方法(startup()、shutdown()、install()、uninstall())都在那里。(它们是空的,因为插件不应该做任何事情。)那么为什么我的 Firefox 42.0 认为其中三个丢失了?为什么第四个 (shutdown()) 不这么认为?
当出现多个错误时,为什么安装似乎工作(来自浏览器的成功消息)?
我错过了什么重要的事情吗?
这是 install.rdf:
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org</em:id>
<em:type>2</em:type>
<em:name>Test AddOn</em:name>
<em:version>1.0</em:version>
<em:bootstrap>true</em:bootstrap>
<em:description>This is a test.</em:description>
<em:creator>Anonymous</em:creator>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>40.0</em:minVersion>
<em:maxVersion>45.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
根据 https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions#chrome.manifest_in_bootstrapped_add-ons 可以使用 chrome.manifest 文件(我认为这意味着它不是必需的)。
如果您有兴趣查看整个插件 .xpi-package,我已将其上传到此处: http ://www.filedropper.com/testaddon