0

我正在修改 Thunderbird 的插件,并在其中一个 javascript 文件中找到硬编码的插件路径。这对我来说似乎很草率,我认为必须有可能以编程方式找出这条路径。但是,经过大量的谷歌搜索,我仍然找不到该问题的答案。

你知道我怎样才能找到install.rdfThunderbird 插件的文件夹(包含 )的路径吗?

4

1 回答 1

3

您可以为此使用AddonManagerAPI

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);
  }
});

供参考:AddonnsIFileURLnsIFile

上面代码中的假设是扩展在安装时解包,您的前任可能添加<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();
});
于 2012-10-19T07:37:14.790 回答