如何知道Firefox Add-on SDK中其他加载项的安装

时间:2016-11-29 19:27:16

标签: javascript firefox firefox-addon firefox-addon-sdk

使用SDK附加组件了解任何附加组件安装(Firefox浏览器)的代码是什么?

我知道应该使用AddonManager.addInstallListener()onNewInstall()方法编写。我无法将它们组合起来并编写代码。请帮我解释一下代码。

1 个答案:

答案 0 :(得分:0)

如果您想了解加载项安装(而不是卸载)的详细进度,可以使用随AddonManager.addInstallListener()添加的侦听器。但是,对于您所询问的内容,在安装了一个and-on时接收事件(即不监视安装的进度,只是它发生了),您可以使用AddonManager.addAddonListener()onInstalled事件。

This other answer of mine包含完整的附加SDK扩展,可通过AddonManager's addAddonListener()方法显示各种可用事件。它还显示了已安装的加载项以及正在安装和卸载的加载项的事件触发顺序(显示您自己安装/卸载的事件以及安装/卸载加载项的时间是不是你自己的附加组件。

将代码编辑到您要求的内容所需的代码导致以下代码(注意:我在这里手动编辑代码,但没有测试它(即可能有错误)。答案中的代码我以上链接已完全测试):

const { AddonManager } = require("resource://gre/modules/AddonManager.jsm");

var addonListener = {
    onInstalled: function(addon){
        console.log('AddonManager Event: Installed addon ID: ' + addon.id 
                    + ' ::addon object:', addon);
    }
}

exports.onUnload = function (reason) {
    //Your add-on listeners are NOT automatically removed when
    //  your add-on is disabled/uninstalled. 
    //You MUST remove them in exports.onUnload if the reason is
    //  not 'shutdown'.  If you don't, errors will be shown in the
    //  console for all events for which you registered a listener.
    if(reason !== 'shutdown') {
        uninstallAddonListener();
    }
};

function installAddonListener(){
    //Using an AddonManager listener is not effective to listen for your own add-on's
    //  install event.  The event happens prior to you adding the listener.
    //console.log('In installAddonListener: Adding add-on listener');
    AddonManager.addAddonListener(addonListener);
}

function uninstallAddonListener(){
    //console.log('In removeAddonListener: Removing add-on listener');
    AddonManager.removeAddonListener(addonListener);
}

installAddonListener();