如何获得自己的名字和没有AddonManger的版本?

时间:2014-06-28 07:20:53

标签: javascript firefox firefox-addon

叠加插件是否有可能获得自己的名称& 版本,而不使用AddonManager

在叠加附加组件中,不会自动提供附加组件ID(如引导附加组件),因此必须手动输入才能使用AddonManager。目前,我正在解析install.rdf的数据。

是否有获取上述数据的替代方法?

2 个答案:

答案 0 :(得分:2)

查询附加组件信息的官方API是AddonManager。其他任何东西都只是黑客攻击或解决方法。

对名称进行解析install.rdf就是这样的黑客并且有其自身的问题:加载项管理器可能已经检索过例如来自在线来源的更新名称,例如addons.mozilla.org网站,因此install.rdf提供的名称将过时,并且不同意about:addons所显示的名称。

我认为通常和附加组件应该知道它自己的ID。但我认识到可能存在一些用于重用的代码(如框架),其中对id进行硬编码是不好的,即编辑要重用的文件。

在这种情况下,在查询install.rdf时,将AddonManager(或其他一些配置文件)解析为获取ID 可能是一种可行的选择。

还有(在MDN上未记录)AddonManager.mapURIToAddonID API,它在内部用于将内存测量值映射到about:memory中的附加组件,但也可以用来代替解析{{1}我猜。

答案 1 :(得分:0)

好的,这个怎么样?

你知道你的插件的名字吗?

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAllAddons(function (addons) {
    var cnt = 0;
    console.log(addons)
    for (var i = 0; i < addons.length; i++) {
        if (addons[i].name == 'Adblock Plus') {
            console.log('addons', cnt, addons[i]);
            console.log(addons[i].name);
            console.log(addons[i].id)
            break;
        }
        cnt++
    }
})

你将不得不对某些东西,名称,id,某些东西进行硬编码。