第四部分 — 消息传递与协调 tabs / 脚本协调模式
目的
展示 MV3 安全的模式,用于选择标签页、检查资格、使用 chrome.scripting 注入代码,并通过消息进行结果协调。
使用场景 / 避免场景
Use when: 当你需要在页面上从用户操作或后台触发运行代码,并且希望在受限制的页面和缺少权限的情况下表现出可预测的行为。
Avoid when: 如果你可以使用静态 content_scripts 入口(通常更可靠用于消息传递)或者需要深度标签管理 UX,请参阅官方文档。
10.1 本章涵盖的内容
这些是连接以下内容的“粘合”模式:
UI → 服务工作者路由(第四部分)
标签的选择和资格
脚本注入策略 (content_scripts vs chrome.scripting)
目标:在 MV3 约束下使标签工作可靠。
10.2 活动标签与明确的权限(决策)
使用 明确的主机权限,当你的扩展必须在没有用户操作的情况下或在一个可预测的站点集上运行时。
使用 activeTab,当你的扩展在用户操作后(例如,点击工具栏按钮)在当前标签页上运行。
注意事项: “它在开发中可以正常工作”通常意味着 你意外地依赖了更广泛的权限。
10.3 安全识别目标标签
Promise 风格:
async function getActiveTabId() { const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); const tabId = tabs?.[0]?.id; if (!tabId) throw new