使用新的 jpm Firefox 引导扩展
Bootstrapped extension with new jpm Firefox
我正在使用 jpm (1.0.5) 的最新(或最后)版本之一实现 Firefox 扩展,但该扩展不调用 startup() 或 shutdown() 方法。我知道必须将扩展名声明为
<em:bootstrap>true</em:bootstrap>
进入 install.rdf 文件,但是当我创建我的命名空间(使用 jpm init)时,没有这个文件,它被替换为 package.json。在这种情况下,我应该如何修改文件以使用启动和关闭方法工作?
你有什么类型的插件?
听起来像是使用遗留 API 的 XUL/Overlay 插件。如果是这种情况,那么您必须创建自己的 bootstrap.js
文件。您完成 convert an overlay extension to restartless 的所有步骤了吗?
jpm init
将仅在使用 Addons-SDK 时创建 bootstrap 代码。我不确定使用 jpm 有什么好处,除非您使用新的 Addons-SDK API 创建附加组件,除了可能从命令行打包并提交附加组件到 AMO 的能力。 jpm 的 debugging/validation 检查似乎没有发现很多问题,几乎 none 在 XUL/Overlay API 基于附加组件中。
也许你已经看过这里了? Bootstrapped extensions, which links to a documented skeleton bootstrap.js.
但请注意,在 chrome.manifest 中,bootstrapped 扩展不支持 overlay
指令。
上面引用的 "convert" 文档中也涵盖了这些和其他主题。
在我的 main.js 中,我像这样监听加载和卸载。
exports.main = function(options, callbacks) {
if (options.loadReason == "install" || options.loadReason == "startup") {
factory = new Factory(AboutDualView);
factory = new Factory(AboutEPFViewer);
registerRemotePages();
}
}
exports.onUnload = function (reason) {
if (reason == "shutdown") {
factory.unregister();
RemotePageManager.removeRemotePageListener("about:dualview");
RemotePageManager.removeRemotePageListener("about:epfviewer");
}
};
function registerRemotePages(){
let DualViewmanager = new RemotePages("about:dualview");
let EPFViewmanager = new RemotePages("about:epfviewer");
}
引用https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload
我正在使用 jpm (1.0.5) 的最新(或最后)版本之一实现 Firefox 扩展,但该扩展不调用 startup() 或 shutdown() 方法。我知道必须将扩展名声明为
<em:bootstrap>true</em:bootstrap>
进入 install.rdf 文件,但是当我创建我的命名空间(使用 jpm init)时,没有这个文件,它被替换为 package.json。在这种情况下,我应该如何修改文件以使用启动和关闭方法工作?
你有什么类型的插件?
听起来像是使用遗留 API 的 XUL/Overlay 插件。如果是这种情况,那么您必须创建自己的 bootstrap.js
文件。您完成 convert an overlay extension to restartless 的所有步骤了吗?
jpm init
将仅在使用 Addons-SDK 时创建 bootstrap 代码。我不确定使用 jpm 有什么好处,除非您使用新的 Addons-SDK API 创建附加组件,除了可能从命令行打包并提交附加组件到 AMO 的能力。 jpm 的 debugging/validation 检查似乎没有发现很多问题,几乎 none 在 XUL/Overlay API 基于附加组件中。
也许你已经看过这里了? Bootstrapped extensions, which links to a documented skeleton bootstrap.js.
但请注意,在 chrome.manifest 中,bootstrapped 扩展不支持 overlay
指令。
上面引用的 "convert" 文档中也涵盖了这些和其他主题。
在我的 main.js 中,我像这样监听加载和卸载。
exports.main = function(options, callbacks) {
if (options.loadReason == "install" || options.loadReason == "startup") {
factory = new Factory(AboutDualView);
factory = new Factory(AboutEPFViewer);
registerRemotePages();
}
}
exports.onUnload = function (reason) {
if (reason == "shutdown") {
factory.unregister();
RemotePageManager.removeRemotePageListener("about:dualview");
RemotePageManager.removeRemotePageListener("about:epfviewer");
}
};
function registerRemotePages(){
let DualViewmanager = new RemotePages("about:dualview");
let EPFViewmanager = new RemotePages("about:epfviewer");
}
引用https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload