Chrome 插件开发

从一个真实问题开始 我经常在浏览器里看技术文章。看到好的想存到 Obsidian,复制粘贴格式全乱。打开"另存为"保存下来是带广告、导航栏、侧边栏的 HTML。想找一个干净的 Markdown 版本,要么没有,要么是闭源插件不敢用。 于是我开始想:我能不能自己写一个? 这是个典型的"想动手"时刻。但真正动手之前,有几个更前置的问题需要想清楚: Chrome 插件到底是什么?和 userscript、网页工具、PWA 差在哪? 我想做的这个事,到底该用哪种形态? 学 Chrome 插件的"投资回报"如何?是一次性投入还是持续折腾? 写这篇文章的目的,是在你打开 manifest.json 之前,帮你想清楚这三个问题。 插件是什么 先把"插件"这个词拆开看。 Chrome 插件(Chrome Extension),也叫浏览器扩展,本质上是一段运行在 Chrome 浏览器里的代码。它能访问一些普通网页拿不到的 API,比如读取当前标签页的 URL、修改请求头、在用户点击工具栏图标时弹出一个小页面。 可以把它理解为: 插件 = 对浏览器的扩展能力 + 对已有网站的增强能力 注意两个关键词:“对浏览器” 和 “对已有网站”。这两个词决定了插件能做什么、不能做什么。 对浏览器意味着插件能拿到浏览器层面的能力,比如: 操作标签页(关闭、新建、切换) 读取和修改浏览器历史 拦截和修改网络请求 在工具栏添加图标 监听键盘快捷键 对已有网站意味着插件的核心战场是"改造现有网站",比如: 给维基百科加一个深色模式 给 GitHub 加一个一键复制文件链接的按钮 给掘金、知乎、CSDN 屏蔽某些干扰元素 插件能做什么、不能做什么 能做的: 改造已有网站(修改 DOM、注入脚本) 提供一个常驻工具栏入口(点击图标触发动作) 跨页面保存数据(用户的偏好、笔记、历史) 监听浏览器事件(标签页变化、下载事件) 不能做(或做起来很费劲): 完全独立的产品(需要服务端配合的复杂功能) 移动端体验(Chrome 插件不适用于移动浏览器) 高性能要求的事(不适合跑复杂的计算任务) 跨浏览器一致体验(Firefox、Edge、Safari 各有差异) 什么时候该用插件 给几个真实场景,帮你判断。 适合用插件的场景: 改造已有网站:给某个你不喜欢的网站加功能或去干扰 跨页面工具:复制当前页面内容、抓取数据、自动填表 浏览器层的小工具:标签页管理、下载管理、截图、翻译 给开发者自己用:调试、API 测试、页面抓取 不适合用插件的场景:...

2025年01月15日 · 3 min · Leanku