Получите корневую папку закладок Google Chrome

Я пытаюсь записать лучший менеджер закладок в расширениях Chrome. Проблема состоит в том, что нет никаких простых примеров (что я могу найти) о том, как на самом деле использовать bookmarks API.

Я посмотрел на источник в качестве примера (когда I'd/led и установил его на моем компьютере, он не сделал ничего кроме, обеспечивают поле поиска. Вводу/вводу и нажатию возврата не удалось сделать что-либо), и ничто не может найти полезным.

Моя конечная цель должна сделать расширение, которое позволяет мне сохранять страницы, чтобы прибыть и читать позже, не имея необходимость идти, регистрируют аккаунт на некотором сервисе где-нибудь. Таким образом, я планирую создать или одну или две папки закладок в корневой папке / другие закладки - в минимуме "непрочитанные страницы" папка. В той папке я создам непрочитанные закладки. Когда пользователь отметит объект как чтение, он будет удален из той папки.

Таким образом, это - то, что я пытаюсь сделать..., любая справка будет значительно цениться, даже если она просто укажет на меня на некоторые хорошие примеры.

ОБНОВЛЕНИЕ:

...


...

Это отображается [object Object], это предлагает (по крайней мере, мне с ограниченным опытом JavaScript), что объект существует. Но как получить доступ к членам того объекта?

Изменение tree кому: tree.id или любой другой из какой надеется быть дисплеями параметров undefined.

6
задан Xan 19 March 2016 в 22:32
поделиться

3 ответа

В настоящее время нет хорошего способа найти такие папки, как «Другие закладки» или «Панель закладок» в API закладок. Вам нужно будет перебрать все закладки и найти, какой узел имеет эти корневые папки, и сохранить его идентификатор закладки. Ошибка регистрируется в выпуске 21330 .

Корневой идентификатор всегда равен 0, и когда я имею в виду 0, он соответствует «панели закладок» и «другим закладкам». Как и любая древовидная структура, у каждого узла есть дочерние элементы. Если вы хотите получить все закладки в одной папке, вы можете использовать getChildren API и получать каждый узел рекурсивно (вы также можете делать это итеративно). Например, следующая закладка получит каждую отдельную закладку:

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 и получите больше закладок, если они этого потребуют.

9
ответ дан 9 December 2019 в 22:30
поделиться

Закладки организованы в виде дерева, где каждый узел в дереве является либо закладкой, либо группой ( папка, которая может содержать узлы). Каждый узел в дереве представлен объектом BookmarkTreeNode.

Нет корневой папки закладок в смысле объекта файловой системы. Все закладки хранятся в структурированном файле, доступ к которому вы получаете через API по предоставленной вами ссылке. Корень дерева возвращается функцией getTree:

chrome.bookmarks.getTree
1
ответ дан 9 December 2019 в 22:30
поделиться

Хорошо, я обнаружил, как получить доступ к тому, что мне нужно. Оглядываясь назад, я должен был увидеть это раньше.

http://code.google.com/chrome/extensions/tut_debugging.html

Используя отладчик, я смог установить точку останова и просмотреть объекты. [Object Object] - это массив длиной 1.

Используя функцию, приведенную в моем примере, tree [0].children - это массив, содержащий детей. В моем дереве установки по умолчанию есть два дочерних элемента: tree [0] .children [0] - это «Панель закладок», а tree [0] .children [1] - «Другие закладки». Остальная часть дерева закладок течет вниз оттуда, хотя я ищу папку «Другие закладки» (tree [0] .children [1]).

1
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: