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

どちらもBookmarkTreeNodesの配列を返しchrome.bookmarks.getTreeますが、BookmarkTreeNodes は必ずしもプロパティを持っているわけではありません。の場合、ツリーの最上位ノードはフォルダであり、URL はありません。chrome.bookmarks.getRecenturlgetTree

BookmarkTreeNode 構造体

を使用する場合getTree、各ノードのchildren配列を使用してツリーを再帰的にトラバースする必要があります。すべての BookmarkTreeNode に属性 (フォルダーの場合) または属性(実際のブックマークの場合)があることを知っておくと役立ちます。次のようなものを試してください:childrenurl

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使用許可が必要です。ページで使用してみてください chrome://bookmarks

于 2015-07-16T01:56:41.870 に答える