如果我尝试以下代码:

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);
  });
});
有用。
为什么不同?

最佳答案

chrome.bookmarks.getTreechrome.bookmarks.getRecent都返回BookmarkTreeNodes数组,但是BookmarkTreeNodes不一定具有url属性。对于getTree,树的顶部节点是文件夹,没有URL:

如果使用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); }
}

关于javascript - "chrome.bookmarks.getTree"为什么不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10268776/

10-11 08:15