Начиная с Firefox 3, закладки были объединены в базу данных Places, содержащую всю историю ваших просмотров. Таким образом, чтобы получить закладки, вы делаете запрос истории, например так (первая строка специфична для SDK дополнения , который вы используете):
var {Cc, Ci} = require("chrome");
var historyService = Cc["@mozilla.org/browser/nav-history-service;1"]
.getService(Ci.nsINavHistoryService);
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();
query.onlyBookmarked = true;
var result = historyService.executeQuery(query, options);
result.root.containerOpen = true;
for (var i = 0; i < result.root.childCount; i++)
{
var node = result.root.getChild(i);
console.log(node.title);
}
Это в основном совпадает с примером кода здесь . Ваша проблема, конечно, в том, что nsINavHistoryResultNode не имеет способа хранения данных, таких как описание. Однако вы можете установить аннотации, см. Использование службы аннотаций Places . Так что, если у вас уже есть переменная node
для вашей закладки:
var annotationName = "my.extension.example.com/bookmarkDescription";
var ioService = Cc["@mozilla.org/network/io-service;1"]
.getService(Ci.nsIIOService);
var uri = ioService.newURI(node.uri, null, null);
var annotationService = Cc["@mozilla.org/browser/annotation-service;1"]
.getService(Ci.nsIAnnotationService);
annotationService.setPageAnnotation(uri, annotationName,
"Some description", 0, Ci.nsIAnnotationService.EXPIRE_NEVER);
Для справки: nsIAnnotationService.setPageAnnotation ()