2011-04-06 3 views
3

Je tente de créer un exemple simple qui alerterait simplement les 5 premiers titres de signets.API Chrome Bookmarks -

J'ai pris l'exemple de code de Google et j'ai retiré la requête de recherche pour voir si je pouvais créer un moyen basique de faire défiler tous les nœuds. Le code de test suivant échoue à mon test d'alerte et je ne sais pas pourquoi.

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); 
}; 

Répondre

10

vider juste votre bookmarkTreeNodes dans la console et vous verrez tout de suite quel est le problème:

var bookmarkTreeNodes = chrome.bookmarks.getTree(
    function(bookmarkTreeNodes) { 
    console.log(bookmarkTreeNodes); 
    }); 
} 

(pour accéder à la console aller à chrome://extensions/ et cliquez sur le lien background.html)

Comme vous le verriez, un arbre retourné contient un élément racine avec un titre vide. Vous auriez besoin de traverser ses enfants pour arriver aux signets réels.

signet simple traversal (juste passe par tous les nœuds):

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); 
     } 

    } 
} 
+0

Comment pourrais-je traverser l'objet, par opposition à traverser le DOM? Je ne sais pas comment se déplacer là-bas! – Korak

+0

@Korak Quel est votre objectif? Qu'essayez-vous de trouver là-bas? – serg

+0

Ce que je cherche finalement à faire est de générer une liste de sélection de dossiers de l'arbre pour l'affichage/sélection par un utilisateur. J'ai pensé que je devrais commencer par comprendre comment les fonctions asynchrones sont mises en place juste pour tirer un peu de données et ont été troublées par lui! (grrr) – Korak

Questions connexes