API 万象:Tabs、书签与下载的进阶神通
在 Chrome 插件的开发世界中,浏览器 API 是我们施展“法术”的根基。它们赋予插件与浏览器深度交互的能力,使我们得以窥探、操控、甚至重塑浏览器的行为。本章,我们将深入探索三大核心 API:Tabs(标签页)、Bookmarks(书签)与 Downloads(下载) ,揭开它们的“神通”之面。
Tabs---浏览器的窗口之眼
标签页是浏览器最基础、最活跃的交互单元。通过 chrome.tabs API,插件可以读取、操作甚至创建新的标签页。
使用前提:
- 需在
manifest.json中声明"permissions": ["tabs"] - 若需访问页面内容,还需声明
"scripting"权限
使用基础:窥探与切换
// 获取当前窗口中所有标签页
chrome.tabs.query({ currentWindow: true }, (tabs) => {
console.log("当前窗口标签页列表:", tabs);
});
// 切换到指定标签页
chrome.tabs.update(tabId, { active: true });
进阶使用:注入脚本与拦截导航
// 在指定标签页中注入内容脚本
chrome.scripting.executeScript({
target: { tabId: tabId },
files: ['content.js']
});
// 监听页面导航事件
chrome.webNavigation.onCompleted.addListener((details) => {
console.log("页面加载完成:", details.url);
});
Bookmarks:操纵书签的“记忆之手”
书签,是用户浏览器中“记忆的锚点”。通过 chrome.bookmarks API,插件可以读取、修改、甚至创建用户的书签结构。
使用前提:
- 需在
manifest.json中声明"permissions": ["bookmarks"] - 建议在操作前添加用户确认机制,避免误删误改
使用基础:读取与查找
// 获取用户所有书签
chrome.bookmarks.getTree((bookmarkTreeNodes) => {
console.log("书签树:", bookmarkTreeNodes);
});
// 查找特定书签
chrome.bookmarks.search({ url: "https://example.com" }, (results) => {
console.log("查找到的书签:", results);
});
进阶使用:增删改查,随心所欲
// 创建新书签
chrome.bookmarks.create({
parentId: folderId,
title: "我的新书签",
url: "https://example.com"
});
// 删除书签
chrome.bookmarks.remove(bookmarkId);
// 修改书签
chrome.bookmarks.update(bookmarkId, { title: "新标题" });
Downloads:掌控下载的“文件之门”
使用前提:
- 需声明
"permissions": ["downloads"] - 用户可通过
saveAs控制是否弹出“另存为”对话框
使用基础:监控下载事件
// 监听下载开始事件
chrome.downloads.onCreated.addListener((downloadItem) => {
console.log("新下载开始:", downloadItem.filename);
});
// 监听下载完成事件
chrome.downloads.onChanged.addListener((delta) => {
if (delta.state?.current === "complete") {
console.log("下载完成:", delta.id);
}
});
进阶使用:主动下载与路径控制
// 主动发起下载
chrome.downloads.download({
url: "https://example.com/file.pdf",
filename: "downloads/myfile.pdf",
saveAs: false
});
从零开始的谷歌浏览器插件开发 文章被收录于专栏
从零探索Chrome插件开发,手把手教你构建实用功能,开启浏览器扩展创作之旅。
