叠加插件是否有可能获得自己的名称& 版本,而不使用AddonManager
?
在叠加附加组件中,不会自动提供附加组件ID(如引导附加组件),因此必须手动输入才能使用AddonManager
。目前,我正在解析install.rdf
的数据。
是否有获取上述数据的替代方法?
答案 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,某些东西进行硬编码。