6

प्राप्त करें मैं क्रोम एक्सटेंशन में एक बेहतर बुकमार्क प्रबंधक लिखने की कोशिश कर रहा हूं। समस्या यह है कि वास्तव में bookmarks API का उपयोग करने के तरीके के बारे में कोई आसान उदाहरण नहीं है (जो मुझे मिल सकता है)।Google क्रोम के रूट बुकमार्क्स फ़ोल्डर

मैंने उदाहरण स्रोत को देखा है (जब मैंने इसे अपने कंप्यूटर पर डी/नेतृत्व और स्थापित किया है तो उसने खोज बॉक्स को छोड़कर कुछ भी नहीं किया है। टाइपिंग/टाइपिंग और रिटर्न दबाने से कुछ भी करने में असफल रहा) और ' कुछ उपयोगी नहीं मिल रहा है।

मेरा अंतिम लक्ष्य एक ऐसा एक्सटेंशन बनाना है जो मुझे पृष्ठों को सहेजने और बाद में को के बिना कुछ सेवा पर किसी खाते के लिए साइन अप करने की अनुमति देता है। तो मैं रूट फ़ोल्डर/अन्य बुकमार्क में एक या दो बुकमार्क फ़ोल्डर्स बनाने की योजना बना रहा हूं - न्यूनतम "अपठित पृष्ठ" फ़ोल्डर पर। उस फ़ोल्डर में मैं अपठित बुकमार्क बनाएगा। जब उपयोगकर्ता आइटम को पढ़ने के रूप में चिह्नित करता है, तो उसे उस फ़ोल्डर से निकाल दिया जाएगा।

तो यही वह है जो मैं करने की कोशिश कर रहा हूं ... किसी भी मदद की सराहना की जाएगी, भले ही यह मुझे कुछ अच्छे उदाहरणों के बारे में बता रहा हो।

अद्यतन:

...<script> 
function display(tree){ 
    document.getElementById("Output").innerHTML = tree; 
} 
function start(){ 
    chrome.bookmarks.getTree(display); 
} 
</script> 
</head> 
<body> 
<h4 id="Output"></h4> 
<script> 
start(); 
</script> 
... 

कि [object Object] प्रदर्शित करता है, कि (एक सीमित जावास्क्रिप्ट के अनुभव के साथ कम से कम मेरे लिए) से पता चलता है कि एक वस्तु मौजूद है। लेकिन उस वस्तु के सदस्यों तक कैसे पहुंचे?

treetree.id या पैरामीटर के रूप में देखने के किसी भी अन्य को undefined प्रदर्शित करने के लिए बदल रहा है।

उत्तर

9

वर्तमान में, बुकमार्क एपीआई में "अन्य बुकमार्क" या "बुकमार्क बार" जैसे फ़ोल्डर खोजने का कोई अच्छा तरीका नहीं है। आपको सभी बुकमार्क के माध्यम से पुन: प्रयास करना होगा और यह पता लगाएं कि किस नोड में रूट फ़ोल्डर्स हैं और इसकी बुकमार्क आईडी सहेजनी है। बग Issue 21330 दायर किया गया है।

रूट आईडी हमेशा 0 है, और जब मेरा मतलब है, तो यह "बुकमार्क बार" और "अन्य बुकमार्क" से मेल खाता है। किसी पेड़ की संरचना के रूप में, प्रत्येक नोड में बच्चे होते हैं। यदि आप सभी बुकमार्क को एक फ़ोल्डर के अंतर्गत लाने के लिए चाहते हैं, तो आप getChildren API का उपयोग कर सकते हैं और प्रत्येक नोड को रिकर्सिवली (आप इसे भी कर सकते हैं) प्राप्त कर सकते हैं। उदाहरण के लिए, निम्नलिखित प्रत्येक बुकमार्क प्राप्त होंगे:

printBookmarks('0'); 

function printBookmarks(id) { 
chrome.bookmarks.getChildren(id, function(children) { 
    children.forEach(function(bookmark) { 
     console.debug(bookmark.title); 
     printBookmarks(bookmark.id); 
    }); 
}); 
} 

अब, हमें प्रत्येक पुनरावृत्ति के लिए API क्यों कॉल करना है? उनका पूरा पेड़ पाने के लिए एक एपीआई है। यदि आपने इसे आजमाया है, तो आप देखेंगे कि GetTree में प्रत्येक नोड में बच्चों की एक सूची होगी। यही कारण है कि एकदम सही है:

chrome.bookmarks.getTree(function(bookmarks) { 
    printBookmarks(bookmarks); 
}); 

function printBookmarks(bookmarks) { 
    bookmarks.forEach(function(bookmark) { 
    console.debug(bookmark.id + ' - ' + bookmark.title + ' - ' + bookmark.url); 
    if (bookmark.children) 
     printBookmark(bookmark.children); 
    }); 
} 

सब है, तो आप iteratively रूप में अच्छी तरह जो बेहतर प्रदर्शन है यह सब कर सकते हैं, लेकिन आप उस पता लगा सकते हैं :) ध्यान दें कि जब आप बुकमार्क बार फिर से करना चाहते हैं, तो आप ओवरराइड कर सकते हैं एक्सटेंशन (जल्द ही) में उस पृष्ठ: http://code.google.com/chrome/extensions/override.html

आप अपने बुकमार्क का एक अच्छा एचटीएमएल पेड़ को दिखाने के लिए चाहते हैं, तो आप आसानी से कि getTree कार्यक्षमता बढ़ाने से मैं ऊपर से पता चला है कि एक माता पिता डोम स्वीकार करने के लिए करते हैं। आप कुछ like this कर सकते हैं। GetTree का उपयोग करने या सबकुछ पतन करने के लिए कोड संपादित करें और getChildren का उपयोग करें और यदि वे अनुरोध करते हैं तो अधिक बुकमार्क प्राप्त करें।

+0

ग्रेट उत्तर, धन्यवाद मोहम्मद। –

1

बुकमार्क्स को किसी पेड़, जहां पेड़ में प्रत्येक नोड या तो किसी बुकमार्क या एक समूह (एक फ़ोल्डर है कि नोड्स शामिल कर सकते हैं) है में व्यवस्थित होते हैं। पेड़ में प्रत्येक नोड को बुकमार्क ट्रीनोड ऑब्जेक्ट द्वारा दर्शाया जाता है।

फ़ाइल सिस्टम ऑब्जेक्ट के अर्थ में कोई रूट बुकमार्क फ़ोल्डर नहीं है। सभी बुकमार्क एक संरचित फ़ाइल में संग्रहीत होते हैं जिसे आप प्रदान किए गए लिंक में एपीआई के माध्यम से एक्सेस करते हैं। पेड़ की जड़ GetTree द्वारा वापस आती है:

chrome.bookmarks.getTree 
+0

हालांकि यह सच हो सकता है, लेकिन मैंने जो भी फॉर्म और फैशन कोशिश की है, वह सही परिणाम लौटने में विफल रहता है। chrome.bookmarks.getTree वास्तव में एक मूल्य वापस नहीं करता है। इसके लिए एक समारोह की आवश्यकता होती है और माना जाता है कि यह उस कार्य के साथ कुछ करता है, लेकिन इसमें समस्या है - यह कहने का कोई आसान उदाहरण नहीं है कि "यह रूट नोड, ब्ला ब्ला ब्लाह" हो जाता है। एक सुंदर उन्नत उदाहरण है, लेकिन जहां तक ​​मैं यह निर्धारित करने में सक्षम हूं कि यह अब मान्य नहीं है (क्योंकि यह काम नहीं करता है, और मैं कुछ लिंक में आया हूं कि उन्होंने एपीआई को कैसे अपडेट किया है) –

1

ठीक है, मैंने पाया है कि मैं जो चाहता हूं उसे एक्सेस कैसे प्राप्त करें। पूर्वदर्शी में मुझे इसे जल्द ही देखना चाहिए था।

http://code.google.com/chrome/extensions/tut_debugging.html

डिबगर मैं एक ब्रेकपाइंट सेट और वस्तुओं को देखने में सक्षम था का उपयोग करना। [ऑब्जेक्ट ऑब्जेक्ट] लंबाई की एक सरणी है 1.

मेरे उदाहरण में दिए गए फ़ंक्शन का उपयोग करके, पेड़ [0] .children बच्चों को युक्त सरणी है। मेरे डिफ़ॉल्ट सेटअप पेड़ पर दो बच्चे हैं, पेड़ [0] .children [0] "बुकमार्क बार" और पेड़ [0] है .children [1] "अन्य बुकमार्क" है। शेष बुकमार्क पेड़ वहां से बहता है, हालांकि "अन्य बुकमार्क" (पेड़ [0] .children [1]) वह फ़ोल्डर है जिसे मैं ढूंढ रहा हूं।

संबंधित मुद्दे