Chrome 书签 API

6

我正在尝试创建一个简单的示例,它只会警报前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个回答

11

将您的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);
        } 

    }
}

我应该如何遍历对象而不是遍历DOM?不确定如何在其中移动! - Korak
@Korak 你的目标是什么?你在那里想找到什么? - serg
我最终想要做的是从树中生成一个文件夹选择列表,供用户显示/选择。我认为我应该先弄清楚如何设置异步函数来提取一些数据,但我一直被卡住了!(气死人) - Korak
@Korak 嗯,树(图)结构很难处理。我添加了如何遍历所有节点的示例。您只需要决定要以哪种顺序遍历它,然后从那里开始。 - serg
谢谢你的帮助!我会使用你的示例并继续努力。非常感激! - Korak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接