Chrome 扩展开发 API实战:Bookmarks(二)

1. 引言

在开发 Chrome 扩展程序时,书签的管理是一项常见需求。chrome.bookmarks API 提供了一套强大的接口,允许开发者创建、查询、更新、移动和删除书签。本文将详细介绍如何使用该 API 来操作浏览器中的书签。


2. 权限声明

manifest.json 文件中声明 bookmarks 权限。例如:

复制代码
{
  "name": "My Extension",
  "permissions": [
    "bookmarks"
  ]
}

声明了该权限后,扩展程序可以正常访问浏览器中的书签功能。


3. chrome.bookmarks.get

3.1 方法功能

根据指定的 ID 或 ID 列表检索书签节点。

3.2 使用方法

复制代码
chrome.bookmarks.get("1", function(bookmarkArray) {
  console.log("Bookmark nodes:", bookmarkArray);
});

3.3 参数详解

  • idOrIdList (必填):字符串或字符串数组,指定要检索的书签节点 ID。
  • callback (必填):函数,接收返回的书签节点数组。

3.4 实际样例

通过 ID 检索单个书签:

复制代码
chrome.bookmarks.get("1", function(bookmarkArray) {
  console.log("Bookmark nodes:", bookmarkArray);
});

3.5 注意事项

  • 如果指定的 ID 无效,回调函数将接收到一个空数组。
  • ID 可以是多个,支持同时检索多个书签节点。

4. chrome.bookmarks.getChildren

4.1 方法功能

检索指定书签文件夹下的所有直接子节点。

4.2 使用方法

复制代码
chrome.bookmarks.getChildren("1", function(children) {
  console.log("Child nodes:", children);
});

4.3 参数详解

  • id (必填):字符串,指定书签文件夹的 ID。
  • callback (必填):函数,接收返回的书签子节点数组。

4.4 实际样例

获取文件夹内的子节点:

复制代码
chrome.bookmarks.getChildren("1", function(children) {
  console.log("Child nodes:", children);
});

4.5 注意事项

  • 此方法只返回直接子节点,不包括子节点的子节点。
  • 如果 ID 对应的节点不是文件夹,则返回空数组。

5. chrome.bookmarks.getRecent

5.1 方法功能

获取最近添加的书签。

5.2 使用方法

复制代码
chrome.bookmarks.getRecent(5, function(recentBookmarks) {
  console.log("Recent bookmarks:", recentBookmarks);
});

5.3 参数详解

  • numberOfItems (必填):整数,指定要检索的书签数量。
  • callback (必填):函数,接收返回的书签节点数组。

5.4 实际样例

获取最近添加的 5 个书签:

复制代码
chrome.bookmarks.getRecent(5, function(recentBookmarks) {
  console.log("Recent bookmarks:", recentBookmarks);
});

5.5 注意事项

  • 结果顺序按添加时间倒序排列。
  • 此方法返回的结果仅与添加时间相关,与访问时间无关。

6. chrome.bookmarks.getSubTree

6.1 方法功能

检索指定书签节点及其子节点。

6.2 使用方法

复制代码
chrome.bookmarks.getSubTree("1", function(subTree) {
  console.log("Subtree:", subTree);
});

6.3 参数详解

  • id (必填):字符串,指定书签节点的 ID。
  • callback (必填):函数,接收返回的书签子树。

6.4 实际样例

获取一个节点及其所有子节点:

复制代码
chrome.bookmarks.getSubTree("1", function(subTree) {
  console.log("Subtree:", subTree);
});

6.5 注意事项

  • 返回结果包括指定节点本身及其所有子节点。
  • 子节点的层级结构在返回的数组中按层次完整保留。

7. chrome.bookmarks.getTree

7.1 方法功能

检索整个书签树。

7.2 使用方法

复制代码
chrome.bookmarks.getTree(function(tree) {
  console.log("Bookmark tree:", tree);
});

7.3 参数详解

  • callback (必填):函数,接收返回的书签树。

7.4 实际样例

获取完整书签结构:

复制代码
chrome.bookmarks.getTree(function(tree) {
  console.log("Bookmark tree:", tree);
});

7.5 注意事项

  • 此方法返回根节点及其所有子节点。
  • 书签树结构对于分析复杂的书签组织非常有用。

8. 注意事项

8.1 权限要求

  • 使用 chrome.bookmarks API 必须声明 bookmarks 权限。

8.2 异步操作

  • 所有 chrome.bookmarks 的方法均为异步调用,需要通过回调函数获取操作结果。

9. 示例:书签管理工具

以下代码展示了如何创建一个简单的书签管理工具:

复制代码
// Display all bookmarks
chrome.bookmarks.getTree(function(tree) {
  console.log("Bookmark tree:", tree);
});

// Create a new bookmark
chrome.bookmarks.create({
  title: "New Bookmark",
  url: "https://example.com"
}, function(newBookmark) {
  console.log("Created bookmark:", newBookmark);
});

// Update an existing bookmark
chrome.bookmarks.update("1", { title: "Updated Bookmark", url: "https://updated.com" }, function(updatedBookmark) {
  console.log("Updated bookmark:", updatedBookmark);
});

// Delete a bookmark
chrome.bookmarks.remove("1", function() {
  console.log("Bookmark removed.");
});

10. 总结

本文详细介绍了 chrome.bookmarks API 的功能及其用法,涵盖了创建、查询、更新、移动和删除书签的操作。通过这些 API,开发者可以轻松管理浏览器中的书签。此外,我们探讨了多个实际应用场景,包括书签层级管理和组织优化。后续文章将深入探讨复杂书签结构的管理和批量操作的实现,敬请期待。

相关推荐
GreenTea33 分钟前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
killerbasd2 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
吴声子夜歌2 小时前
ES6——二进制数组详解
前端·ecmascript·es6
码事漫谈3 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
ZC跨境爬虫3 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝3 小时前
svg图片
前端·css·学习·html·css3
橘子编程3 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
王夏奇3 小时前
python中的__all__ 具体用法
java·前端·python
叫我一声阿雷吧4 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰4 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js