В настоящее время нет хорошего способа найти папки, такие как «Другие закладки» или «Панель закладок» в API закладок. Вам нужно будет перебрать все закладки, найти узел с этими корневыми папками и сохранить его идентификатор закладки. Ошибка подана Выпуск 21330 .
Идентификатор корня всегда равен 0, а когда я имею в виду 0, он соответствует «Панели закладок» и «Другие закладки». Как и любая древовидная структура, у каждого узла есть дочерние элементы. Если вы хотите получить все закладки из одной папки, вы можете использовать API getChildren и рекурсивно получить каждый узел (вы можете делать это итеративно). Например, следующее будет получать каждую закладку:
printBookmarks('0');
function printBookmarks(id) {
chrome.bookmarks.getChildren(id, function(children) {
children.forEach(function(bookmark) {
console.debug(bookmark.title);
printBookmarks(bookmark.id);
});
});
}
Теперь, почему мы должны вызывать API для каждой итерации? Это API для получения всего дерева. Если вы попробовали это, вы увидите, что у каждого узла в getTree будет список дочерних элементов. Это идеально:
chrome.bookmarks.getTree(function(bookmarks) {
printBookmarks(bookmarks);
});
function printBookmarks(bookmarks) {
bookmarks.forEach(function(bookmark) {
console.debug(bookmark.id + ' - ' + bookmark.title + ' - ' + bookmark.url);
if (bookmark.children)
printBookmark(bookmark.children);
});
}
Вот и все, вы также можете делать все это итеративно, что повышает производительность, но вы можете это понять :) Обратите внимание, что, поскольку вы хотите повторить панель закладок, вы можете переопределить эту страницу в расширениях (скоро):
http://code.google.com/chrome/extensions/override.html
Если вы хотите показать красивое HTML-дерево своих закладок, вы можете легко сделать это, расширив функциональность getTree, которую я показал выше, чтобы принять родительский DOM. Вы можете сделать что-то , как это . Отредактируйте код, чтобы использовать getTree или сверните все, а также используйте getChildren и извлекайте больше закладок, если они этого потребуют.