API закладок Chrome —

#google-chrome-extension #bookmarks

#google-chrome-расширение #закладки

Вопрос:

Я пытаюсь создать простой пример, который просто предупреждал бы о первых 5 заголовках закладок.

Я взял пример кода Google и удалил поисковый запрос, чтобы посмотреть, смогу ли я создать базовый способ циклического обхода всех узлов. Следующий тестовый код не проходит мой тест оповещения, и я не знаю почему.

 function dumpBookmarks() {
var bookmarkTreeNodes = chrome.bookmarks.getTree(
  function(bookmarkTreeNodes) {
   (dumpTreeNodes(bookmarkTreeNodes));
  });
}
function dumpTreeNodes(bookmarkNodes) {
var i;
for (i = 0; i < 5; i  ) {
  (dumpNode(bookmarkNodes[i]));
}
}
function dumpNode(bookmarkNode) {
alert(bookmarkNode.title);
};
  

Ответ №1:

Просто сбросьте свой bookmarkTreeNodes в консоль, и вы сразу увидите, в чем проблема:

 var bookmarkTreeNodes = chrome.bookmarks.getTree(
  function(bookmarkTreeNodes) {
   console.log(bookmarkTreeNodes);
  });
}
  

(чтобы получить доступ к консоли, перейдите на chrome://extensions/ и нажмите на background.html ссылку)

Как вы могли видеть, возвращаемое дерево содержит один корневой элемент с пустым заголовком. Вам нужно будет обойти его дочерние элементы, чтобы добраться до реальных закладок.

Простой обход закладок (просто проходит через все узлы):

 function traverseBookmarks(bookmarkTreeNodes) {
    for(var i=0;i<bookmarkTreeNodes.length;i  ) {
        console.log(bookmarkTreeNodes[i].title, bookmarkTreeNodes[i].url ? bookmarkTreeNodes[i].url : "[Folder]");

        if(bookmarkTreeNodes[i].children) {
            traverseBookmarks(bookmarkTreeNodes[i].children);
        } 

    }
}
  

Комментарии:

1. Как бы я мог перемещаться по объекту в отличие от обхода DOM? Не уверен, как с этим справиться!

2. @Korak Какова ваша цель? Что вы пытаетесь там найти?

3. В конечном итоге я хочу создать список папок из дерева для отображения / выбора пользователем. Подумал, что мне следует начать с простого выяснения того, как настраиваются асинхронные функции только для извлечения небольшого количества данных, и был поставлен этим в тупик! (grrr)

4. @Korak Ну, с древовидными (графическими) структурами сложно работать. Я добавил пример того, как проходить через все узлы. Вам просто нужно решить, в каком порядке вы хотите просмотреть его, и перейти оттуда.

5. Спасибо за помощь! Я собираюсь работать с вашим примером и продолжать бороться. Действительно ценю это!