我正在修改 Thunderbird 的插件,并在其中一个 javascript 文件中找到硬编码的插件路径。这对我来说似乎很草率,我认为必须有可能以编程方式找出这条路径。但是,经过大量的谷歌搜索,我仍然找不到该问题的答案。
你知道我怎样才能找到install.rdf
Thunderbird 插件的文件夹(包含 )的路径吗?
我正在修改 Thunderbird 的插件,并在其中一个 javascript 文件中找到硬编码的插件路径。这对我来说似乎很草率,我认为必须有可能以编程方式找出这条路径。但是,经过大量的谷歌搜索,我仍然找不到该问题的答案。
你知道我怎样才能找到install.rdf
Thunderbird 插件的文件夹(包含 )的路径吗?
您可以为此使用AddonManager
API:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("foo@example.com", function(addon)
{
var uri = addon.getResourceURI("install.rdf");
if (uri instanceof Components.interfaces.nsIFileURL)
{
var file = uri.file;
alert(file.parent.path);
}
});
供参考:Addon、nsIFileURL、nsIFile。
上面代码中的假设是扩展在安装时解包,您的前任可能添加<em:unpack>true</em:unpack>
到install.rdf
. 通常不应指定此标志,将扩展打包在磁盘上会更好地提高性能。如果您只需要从扩展中读取文件,则可以使用XMLHttpRequest
它,而无需它是磁盘上的物理文件:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("foo@example.com", function(addon)
{
var uri = addon.getResourceURI("example.txt");
var request = new XMLHttpRequest("GET", uri.spec);
request.addEventListener("load", function()
{
alert(request.responseText);
}, false);
request.send();
});