Использование компонентов XPCOM из SDK Mozilla Add-on - PullRequest
7 голосов
/ 11 октября 2011

В прошлом я занимался разработкой надстроек Mozilla (начальный уровень). Но, столкнувшись с XPCOM, я очень испугался и оставил его посередине.

В последнее время только я столкнулся с надстройкой SDK и нашел ее действительно крутой, и было очень приятно видеть, что работа над SDK заняла не более двух дней. Теперь я снова застрял в модуле XPCOM.

Теперь я действительно хочу использовать возможности XPCOM, но мне понадобится как минимум неделя, чтобы ознакомиться с XPCOM в контексте SDK. Какой код мне нужен, чтобы получить желаемую функциональность?

  1. Для каждого сеанса пользователя я хочу что-то записать. Я могу различать сессии. Теперь мне нужен код для создания файла на компьютере пользователя, открытия его из надстройки и записи в него чего-либо.

  2. Код для доступа к закладкам и загрузкам и их чтения.

Было бы действительно душераздирающим моментом, если бы мне пришлось переключиться обратно из SDK.

1 Ответ

7 голосов
/ 11 октября 2011

Пакет chrome предоставляет полный доступ к XPCOM.Для доступа к файлам лучше всего использовать модуль FileUtils :

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

Несколько необычный синтаксис для импорта модуля из-за ошибка 683217 .Обратите внимание, что FileUtils.openFileOutputStream() доступен только начиная с Firefox 7, а FileUtils.openSafeFileOutputStream() не может использоваться, если вы хотите добавить в файл.

Для доступа к закладкам вы используете обычный фрагмент кода начиная с:

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