返回顶部
c

chrome-extensionChrome扩展指南

Comprehensive guide for building Chrome extensions with Manifest V3. Use this skill whenever the user mentions Chrome extension, browser extension, manifest.json, content script, service worker (in extension context), popup, side panel, chrome.runtime, chrome.tabs, chrome.storage, chrome.scripting, background script, MV3, Manifest V3, or any Chrome extension API. Also trigger when the user wants to inject scripts into web pages, communicate between page and background, bypass CSP from a content

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
179
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

chrome-extension

Chrome 扩展开发 (Manifest V3)

本技能涵盖使用 MV3 构建、调试和发布 Chrome 扩展所需的一切内容。它被组织为一个路由文档:首先阅读此文件以了解架构和决策点,然后加载相关的参考文件以获取实现细节。

参考文件

仅读取与当前任务相关的参考文件。每个文件都是独立的。

文件何时阅读
references/manifest-v3.md设置或修改 manifest.json、配置图标、版本管理
references/service-worker.md
后台逻辑、生命周期、状态持久化、定时器、事件 |
| references/content-scripts.md | 向页面注入代码、隔离/主世界、动态注入、SPA 处理、孤立脚本 |
| references/messaging-rpc.md | 任意上下文间的通信、类型化协议、RPC 层、异步处理器模式 |
| references/ui-surfaces.md | 弹出窗口、选项页面、侧边栏、上下文菜单、命令、通知、多功能框、开发者工具面板 |
| references/storage.md | chrome.storage(本地/同步/会话)、配额限制、响应式模式、框架钩子 |
| references/network-csp.md | 内容脚本的 HTTP 请求、CSP 绕过中继、declarativeNetRequest、离屏文档、CORS |
| references/permissions.md | 必需/可选权限、主机权限、activeTab、运行时请求流程 |
| references/web-accessible-resources.md | 向网页暴露扩展文件、安全影响 |
| references/typescript-build.md | TypeScript 设置、项目结构、构建工具对比、打包 |
| references/publishing.md | Chrome 网上应用商店提交、审核流程、拒绝原因、更新、隐私政策 |
| references/execution-contexts.md | 通信流程图、各上下文能力/限制、选择正确的消息传递方式 |
| references/debugging-mistakes.md | 扩展的开发者工具、测试 SW 终止、常见陷阱、错误模式 |

架构概览

一个 Chrome 扩展最多有 5 个执行上下文,通过消息传递进行通信:

┌──────────────────────────────────────────────────────────┐
│ 扩展进程 │
│ ┌─────────────────┐ ┌───────┐ ┌─────────┐ ┌──────┐ │
│ │ 服务工作者 │ │ 弹出 │ │ 选项 │ │ 侧边 │ │
│ │ (后台) │ │ 窗口 │ │ 页面 │ │ 栏 │ │
│ │ - 无 DOM │ │ 完整 │ │ 完整 │ │ 完整 │ │
│ │ - 临时性 │ │ DOM │ │ DOM │ │ DOM │ │
│ │ - 所有 chrome.* │ │ 所有 │ │ 所有 │ │ 所有 │ │
│ │ API │ │ API │ │ API │ │ API │ │
│ └────────┬─────────┘ └───┬───┘ └────┬────┘ └──┬───┘ │
│ │ chrome.runtime.sendMessage / connect │ │
└───────────┼────────────────┼───────────┼──────────┼──────┘
│ │ │ │
chrome.tabs.sendMessage │ │ │
│ │ │ │
┌───────────┼────────────────┼───────────┼──────────┼──────┐
│ 网页 ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 内容脚本 │ │ 主世界脚本 │ │
│ │ (隔离世界) │◄──►│ (页面上下文) │ │
│ │ - 共享 DOM │ │ - 共享 DOM │ │
│ │ - 自有 JS 作用域 │ │ - 页面 JS 作用域 │ │
│ │ - chrome.runtime │ │ - 无 chrome.* API│ │
│ │ - chrome.storage │ │ - 完整页面访问 │ │
│ │ - 受 CSP 限制 │ │ - 受 CSP 限制 │ │
│ │ (仅网络) │ │ (完全) │ │
│ └──────────────────┘ └──────────────────┘ │
│ ▲ window.postMessage │
│ │ (通过共享 DOM) │
└──────────────────────────────────────────────────────────┘

通信流程(标记通道)

┌───────────────────────────────────────────────────────────────────────────┐
│ 扩展进程 │
│ │
│ ┌─────────────────┐ chrome.runtime ┌───────┐ ┌─────────┐ ┌──────┐ │
│ │ 服务工作者 │◄─.sendMessage()──│ 弹出 │ │ 选项 │ │ 侧边 │ │
│ │ (后台) │◄─.connect()──────│ 窗口 │ │ 页面 │ │ 栏 │ │
│ │ │ └───────┘ └─────────┘ └──────┘ │
│ │ - 无 DOM │ ┌────────────────────────────────────────────┐ │
│ │ - 临时性 30s │ │ SW 无法主动推送消息到这些页面。 │ │
│ │ - 所有 chrome.* │ │ 使用:端口 (.connect) 或 storage.onChanged │ │
│ └────────┬─────────┘ └────────────────────────────────────────────┘ │
│ │ │
│ chrome.storage.onChanged ◄── 在所有上下文中同时触发 │
│ │
└───────────┼──────────────────────────────────────────────────────────────┘
│ chrome.tabs.sendMessage(tabId, ...) [SW 必须知道 tabId]

┌───────────┼──────────────────────────────────────────────────────────────┐
│ 网页 ▼ │
│ ┌──────────────────┐ window.postMessage ┌──────────────────┐ │
│ │ 内容脚本 │◄───────────────────►│ 主世界脚本 │ │
│ │ (隔离世界) │ 自定义 DOM 事件 │ (页面上下文) │ │
│ │ │ │ │ │
│ │ chrome.runtime ───┼── 与 SW 双向通信 │ 无 chrome.* API │ │
│ │ chrome.storage │ │ 完整页面 JS │ │
│ │ 共享 DOM │ │ 共享 DOM │ │
│ │ 页面 CSP (网络) │ │ 页面 CSP (完全) │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘

有关详细流程图(三层桥接、跨扩展、存储广播)以及各上下文的权限、限制和解决方案的详细说明:→ 阅读 references/execution-contexts.md

通信方法一览

方法方向最佳用途
chrome.runtime.sendMessage任意扩展上下文 → SW一次性请求/响应(90% 的情况)
chrome.tabs.sendMessage
SW → 内容脚本(按 tabId) | 向特定标签页推送数据 | | chrome.runtime.connect (端口) | 双向 | 流式传输、进度、SW ↔ 弹出窗口 | | window.postMessage | 同一页面上的世界之间 | 页面 JS ↔ 内容脚本桥接 | | chrome.storage.onChanged | 广播到所有上下文 | 设置同步,无需消息传递 |

→ 包含限制和边界情况的完整矩阵:references/execution-contexts.md → 实现模式、类型化协议、RPC 层:references/messaging-rpc.md

关键架构规则

  1. 1. 服务工作者是临时性的。 它在 30 秒不活动后终止。所有状态必须持久化到 chrome.storage。所有事件监听器必须在顶层同步注册。永远不要将 setTimeout/setInterval 用于超过几秒的操作。→ 阅读 references/service-worker.md
  1. 2. 内容脚本在页面的源中运行。 内容脚本的网络请求受页面的 CSP 和 CORS 限制。要绕过,通过服务工作者中继。→ 阅读 references/network-csp.md
  1. 3. 消息传递是核心。 每个跨

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 chrome-extension-1776009063 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 chrome-extension-1776009063 技能

通过命令行安装

skillhub install chrome-extension-1776009063

下载

⬇ 下载 chrome-extension v1.0.2(免费)

文件大小: 55.76 KB | 发布时间: 2026-4-13 09:42

v1.0.2 最新 2026-4-13 09:42
Version 1.0.2

- Updated metadata version to 1.0.2.
- Added AskUserQuestion to allowed tools.
- Minor formatting fixes in the reference table and documentation.
- No functional or structural changes to the skill’s content or routing logic.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部