6

如果我尝试以下代码:

chrome.bookmarks.getTree(function(items) {
  items.forEach(function(item) {
    document.write(item.url);
  });
});

它返回未定义。但是当我写:

chrome.bookmarks.getRecent(20, function(items) {
  items.forEach(function(item) {
    document.write(item.url);
  });
});

有用。

为什么会有所不同?

4

2 回答 2

10

两者都chrome.bookmarks.getTree返回BookmarkTreeNodeschrome.bookmarks.getRecent数组,但 BookmarkTreeNodes 不一定有属性。在 的情况下,树的顶部节点是文件夹并且没有 URL:urlgetTree

书签树节点结构

如果使用getTree,则必须使用每个节点的children数组递归遍历树。知道每个 BookmarkTreeNode要么有一个children属性(如果它是一个文件夹)要么有一个url属性(如果它是一个实际的书签)会有所帮助。尝试类似:

chrome.bookmarks.getTree(function(itemTree){
    itemTree.forEach(function(item){
        processNode(item);
    });
});

function processNode(node) {
    // recursively process child nodes
    if(node.children) {
        node.children.forEach(function(child) { processNode(child); });
    }

    // print leaf nodes URLs to console
    if(node.url) { console.log(node.url); }
}
于 2012-04-24T05:44:06.063 回答
-1

chrome.bookmarks需要许可才能使用。尝试在 page 中使用它 chrome://bookmarks

于 2015-07-16T01:56:41.870 回答