2013-05-29 30 views
1

我想通過樹這樣的同步,但遞歸遍歷書籤樹:Chrome BookmarkTreeNode沒有「兒童」屬性 - API文檔是否過時?

function objToString(obj){ 
    var a = ''; 
    for(var p in obj){ 
    a += p + ' : ' + obj[p] + ' \n'; 
    } 
    return a; 
} 

我得到這樣的:

function traverseBookmarks(bookmarkTreeNodes) { 
for(var i=0;i<bookmarkTreeNodes.length;i++) { 
    if(bookmarkTreeNodes[i].children) { 
     traverseBookmarks(bookmarkTreeNodes[i].children); 
    } 

    } 
} 

但是,當我使用這種打印出來的bookmarkTreeNodes[i]屬性

dateAdded : 1369804994102 
dateGroupModified : 1369805295054 
id : 2240 
index : 9 
parentId : 1 
title : Diet 

沒有children屬性像API說應該有。沒有children,沒有同步遍歷書籤樹的方法。目前,我必須使用每個文件夾節點的id,然後使用異步功能chrome.bookmarks.getChildren()來檢索導致各種其他問題的子項,例如在異步調用完成之前執行後續代碼。

回答

1

不,您的代碼中存在一個錯誤。爲了滿足自己的情況:

  1. 請檢查彈出窗口或打開您的擴展加載的頁面,並將檢查器中的頁面上下文切換到您的擴展。
  2. 切換到控制檯。
  3. 類型chrome.bookmarks.getTree(function(r){console.log(r);});
  4. 展開被記錄的對象。只要您確實擁有書籤層次結構,您就會按照承諾看到帶有子項的對象。

你沒有說你是如何檢索bookmarkTreeNodes,所以不可能從你的問題中知道錯誤在哪裏。如果您在回調函數頂部放置了一個類似的console.log,並看到不同的結果,那麼您將縮小錯誤,但是您得到的結果是bookmarkTreeNodes

+0

首先非常感謝您的時間!這是正確的在我面前,但我在複雜的事情。非常感激。 –