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,开发者可以轻松管理浏览器中的书签。此外,我们探讨了多个实际应用场景,包括书签层级管理和组织优化。后续文章将深入探讨复杂书签结构的管理和批量操作的实现,敬请期待。

相关推荐
WeiXiao_Hyy8 分钟前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
吃杠碰小鸡25 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone31 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_09011 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农1 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳2 小时前
JavaScript 的宏任务和微任务
javascript
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_3 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js