API Chrome Bookmarks - - PullRequest
       18

API Chrome Bookmarks -

5 голосов
/ 06 апреля 2011

Я пытаюсь создать простой пример, который бы предупредил первые 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 Ответ

10 голосов
/ 06 апреля 2011

Просто сбросьте ваш 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);
        } 

    }
}
...