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

相关推荐
SuperEugene14 分钟前
Vue3 + Element Plus 表格实战:批量操作、行内编辑、跨页选中逻辑统一|表单与表格规范篇
开发语言·前端·javascript
极梦网络无忧38 分钟前
基于 Vite + Vue3 的组件自动注册功能
前端·javascript·vue.js
Predestination王瀞潞1 小时前
5.4.3 通信->WWW万维网内容访问标准(W3C):WWW(World Wide Web) 协议架构(分层)
前端·网络·网络协议·架构·www
爱学习的程序媛1 小时前
【Web前端】优化Core Web Vitals提升用户体验
前端·ui·web·ux·用户体验
zabr1 小时前
花了 100+ 篇笔记,我整理出 了一套 AI Agent 工程完全指南
前端·后端·agent
软弹1 小时前
深入理解 React Ref 机制:useRef 与 forwardRef 的协作原理
前端·javascript·react.js
YaHuiLiang1 小时前
Ai Coding浪潮下的前端:“AI在左,裁员在右”
前端
雪碧聊技术1 小时前
前端vue代码架子搭建
前端·javascript·vue.js·前端项目代码框架搭建
爱学习的程序媛1 小时前
【Web前端】前端用户体验优化全攻略
前端·ui·交互·web·ux·用户体验
han_1 小时前
JavaScript设计模式(二):策略模式实现与应用
前端·javascript·设计模式