为什么"chrome.bookmarks.getTree"不起作用?

Tom*_*Tom 5 javascript google-chrome-extension

如果我尝试以下代码:

chrome.bookmarks.getTree(function(items) {
  items.forEach(function(item) {
    document.write(item.url);
  });
});
Run Code Online (Sandbox Code Playgroud)

它会回复原状.但是当我写道:

chrome.bookmarks.getRecent(20, function(items) {
  items.forEach(function(item) {
    document.write(item.url);
  });
});
Run Code Online (Sandbox Code Playgroud)

有用.

为什么会有所不同?

aps*_*ers 8

双方chrome.bookmarks.getTreechrome.bookmarks.getRecent返回数组BookmarkTreeNodes,但BookmarkTreeNodes不一定有url产权.在这种情况下getTree,树的顶部节点是文件夹,没有URL:

BookmarkTreeNode结构

如果使用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); }
}
Run Code Online (Sandbox Code Playgroud)