Way*_*ner 6 javascript bookmarks google-chrome google-chrome-extension
我正在尝试在Chrome扩展程序中编写更好的书签管理器.问题是没有关于如何实际使用bookmarks
API的简单示例(我可以找到).
我查看了示例源代码(当我将其导入并安装在我的计算机上时,除了提供搜索框之外它没有做任何事情.键入/输入并按返回无法执行任何操作)并且找不到任何有用的内容.
我的最终目标是制作一个扩展程序,允许我保存页面以便稍后阅读,而无需在某个地方注册某个服务的帐户.所以我计划在根文件夹/其他书签中创建一个或两个书签文件夹 - 至少是"未读页面"文件夹.在该文件夹中,我将创建未读书签.当用户将项目标记为已读时,它将从该文件夹中删除.
所以这就是我想要做的......任何帮助都会非常感激,即使它只是指向一些好的例子.
更新:
...<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>
...
Run Code Online (Sandbox Code Playgroud)
这[object Object]
表明,这表明(至少对我有限的JavaScript经验)对象存在.但是如何访问该对象的成员?
更改tree
为tree.id
或将显示为参数的任何其他内容undefined
.
目前,没有很好的方法可以在书签API中找到诸如"其他书签"或"书签栏"之类的文件夹.您必须遍历所有书签并找到哪个节点具有这些根文件夹并保存其书签ID.该缺陷是申请发行21330.
根id始终为0,当我的意思是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);
});
});
}
Run Code Online (Sandbox Code Playgroud)
现在,为什么我们必须为每次迭代调用API?它们是获取整个树的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);
});
}
Run Code Online (Sandbox Code Playgroud)
总而言之,你可以迭代地完成所有这些,这是更好的性能,但你可以想出来:)注意,因为你想要重做书签栏,你可以在扩展中覆盖该页面(很快): http:/ /code.google.com/chrome/extensions/override.html
如果要显示书签的漂亮HTML树,可以通过扩展我上面显示的getTree功能来接受父DOM,从而轻松实现.你可以做一些这样的.编辑代码以使用getTree或折叠所有内容并使用getChildren并在请求时获取更多书签.
归档时间: |
|
查看次数: |
12921 次 |
最近记录: |