使用Mozilla Add-on SDK中的XPCOM组件

时间:2011-10-11 14:08:36

标签: firefox firefox-addon xpcom firefox-addon-sdk

我过去曾参与过Mozilla附加开发(初学者级别)。但在遇到XPCOM时,我真的很害怕,把它留在了中间。

最近只有我遇到了Add-on SDK,发现它非常酷,看到几个月之前的工作与SDK的工作时间不超过2天真的很吸引人。现在我再次被困在XPCOM模块上。

现在我真的想要利用XPCOM的强大功能但是至少需要一周时间才能在SDK环境中熟悉XPCOM。我需要什么代码才能获得我想要的功能?

  1. 对于每个用户会话,我想记录一些内容。我能够区分会话。我现在想要的是在用户机器上创建文件的代码,从附加组件中打开它并在其上写入内容。

  2. 访问书签和下载并阅读它们的代码。

  3. 如果我不得不从SDK切换回来,那将是一个令人心碎的时刻。

1 个答案:

答案 0 :(得分:7)

chrome package为您提供完整的XPCOM访问权限。对于文件访问,最好使用FileUtils module

var {Cc, Ci, Cu} = require("chrome");
var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("ProfD", ["mylogfile.txt"]);
var stream = FileUtils.openFileOutputStream(...);
stream.write(data, data.length);
stream.close();

导入模块的一些不寻常的语法归因于bug 683217。请注意,FileUtils.openFileOutputStream()仅适用于Firefox 7,如果您要附加到文件,则FileUtils.openSafeFileOutputStream()不可用。

对于书签访问,您可以使用通常的code snippets,从:

开始
var bmsvc = Cc["@mozilla.org/browser/nav-bookmarks-service;1"]
              .getService(Ci.nsINavBookmarksService);