Я пытаюсь записать лучший менеджер закладок в расширениях Chrome. Проблема состоит в том, что нет никаких простых примеров (что я могу найти) о том, как на самом деле использовать bookmarks
API.
Я посмотрел на источник в качестве примера (когда I'd/led и установил его на моем компьютере, он не сделал ничего кроме, обеспечивают поле поиска. Вводу/вводу и нажатию возврата не удалось сделать что-либо), и ничто не может найти полезным.
Моя конечная цель должна сделать расширение, которое позволяет мне сохранять страницы, чтобы прибыть и читать позже, не имея необходимость идти, регистрируют аккаунт на некотором сервисе где-нибудь. Таким образом, я планирую создать или одну или две папки закладок в корневой папке / другие закладки - в минимуме "непрочитанные страницы" папка. В той папке я создам непрочитанные закладки. Когда пользователь отметит объект как чтение, он будет удален из той папки.
Таким образом, это - то, что я пытаюсь сделать..., любая справка будет значительно цениться, даже если она просто укажет на меня на некоторые хорошие примеры.
ОБНОВЛЕНИЕ:
...
...
Это отображается [object Object]
, это предлагает (по крайней мере, мне с ограниченным опытом JavaScript), что объект существует. Но как получить доступ к членам того объекта?
Изменение tree
кому: tree.id
или любой другой из какой надеется быть дисплеями параметров undefined
.
В настоящее время нет хорошего способа найти такие папки, как «Другие закладки» или «Панель закладок» в 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 и получите больше закладок, если они этого потребуют.
Закладки организованы в виде дерева, где каждый узел в дереве является либо закладкой, либо группой ( папка, которая может содержать узлы). Каждый узел в дереве представлен объектом BookmarkTreeNode.
Нет корневой папки закладок в смысле объекта файловой системы. Все закладки хранятся в структурированном файле, доступ к которому вы получаете через API по предоставленной вами ссылке. Корень дерева возвращается функцией getTree:
chrome.bookmarks.getTree
Хорошо, я обнаружил, как получить доступ к тому, что мне нужно. Оглядываясь назад, я должен был увидеть это раньше.
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]).