如果我尝试以下代码:
chrome.bookmarks.getTree(function(items) {
items.forEach(function(item) {
document.write(item.url);
});
});
它返回undefined。但是当我写道:
chrome.bookmarks.getRecent(20, function(items) {
items.forEach(function(item) {
document.write(item.url);
});
});
它有效。
为什么会有所不同?
答案 0 :(得分:7)
chrome.bookmarks.getTree
和chrome.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); }
}
答案 1 :(得分:-1)
chrome.bookmarks
需要使用权限。尝试在页面中使用它
chrome://bookmarks
。