Chrome扩展开发系列开篇
大家好,我是 dom 哥。这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星。
浏览器现状
研究机构 Statcounter 发布了 2023 年 9 月报告,揭示了有关浏览器的最新统计数据。
| 浏览器 | 市场份额 | Chromium-based? |
|---|---|---|
| Chrome | 63.56% | Yes |
| Safari | 19.85% | No |
| Edge | 5.43% | Yes |
| Firefox | 2.94% | No |
| Opera | ... | Yes |
可以看到基于 Chromium 的浏览器占了全球市场的 7 成!
对于前端开发来说,Chrome 更是形影不离的饭碗级软件 。既然 Chrome 这么重要,那么把它研究透一定大有裨益。
在我看来,Chrome 值得深入研究的地方早有两块:DevTools 和 Extension。
先说说 DevTools,即开发者工具,是 Chrome 为我们提供的一套功能强大的集开发,调试, 分析诸多功能于一身的内置工具。如下图所示:

像 Elements,Console,Sources, Network,Application 这些都是日常开发调试离不开的功能面板。但是我们开发者对 DevTools 的主要研究内容是怎么用。因为这些强大的功能面板都是 Chrome 内置的,作为开发者使用者,只能用,不能动代码。
然后是 Extension,即 Chrome 扩展,是留给广大开发者自由发挥的天地。
- 想给一些页面注入 js,css?
- 想跨浏览器的页签运行一个后台服务?
- 想自定义新打开的标签页?
- 想实现什么天马行空的想法?
这些都可以通过 Chrome 扩展实现!Chrome 为扩展程序提供了大量 chrome.* API 用于开放 Chrome 的能力。
大家开发的扩展可以发布到 Chrome 应用商店供海量用户选择,就像苹果的 App Store 一样!
Chrome 应用商店如下图:

甚至,如果天时地利人和,你甚至可以通过 Chrome 扩展赚点零花钱 也不是不可能,不过别抱太大希望哦
Chrome 扩展开发 ️
学习一门技术,最好的方式就是去官网,看官方文档,跟着官方文档边看边练,这是不会错的路子。
Chrome Extension 也不例外。Chrome 官方为其扩展开发提供了详尽的文档,奈何,全是英文啊~,看的我四级词汇都不够用了:

不但有文档,每个功能特性都提供了示例代码,简直不要太贴心~
总结,梳理,写系列教程
记得刚接触到 Chrome Extension 时它还是 manifest V2 版本,当时是想做一个 Chrome 扩展,通过拦截网络请求修改其 header 突破跨域限制。时过境迁,如今已是 manifest V3 版本,Chrome 对 webRequest 的细则已做了调整,当初写的代码即将不再支持运行 。
还折腾过一个录制页面操作的扩展,记录下鼠标点击和表单输入等操作,可以重放,模拟这些操作再还原页面状态。后来清理磁盘,居然 TMD 手贱把项目清理掉了,大腿拍青,切记 git push 大于天啊!如今 Chrome 已经有了 Recorder 工具,和我当时的目标类似,只不过我当时的做法是直接用 content_scripts 在页面上重放,而不是在 Puppeteer 里去重放。
期间还为了各种小用途开发过十几个功能不一的扩展程序。现在主要是维护一个辅助日常开发,和业务高耦合的扩展。
但,几年下来,虽写了不少扩展程序,但总感觉零碎,所以我决定把有关 Chrome 扩展开发的东西系统的梳理总结起来,通过沉淀成一份系列教程,建立起知识体系,成为自己的核心竞争力。
目前心中的大纲简单罗列如下,勾上的是已完成的:
- Chrome扩展的核心:manifest 文件(上)
- Chrome扩展的核心:manifest 文件(中)
- Chrome扩展的核心:manifest 文件(下)
- Chrome扩展开发实战:快速填充表单
- 打造一个极度舒适的Chrome扩展项目开发环境
- Chrome扩展开发中的消息通信
- 推荐给前端开发的 5 款 Chrome 扩展
- Chrome扩展开发系列完结篇
后续慢慢完善吧,轮廓已成,细节可以慢慢雕琢。
Chrome 扩展开发似乎是个冷门,不过也可以理解,对前端开发来说,这属于一种有了更好,没有也罢的技术,就算不助我开发,也不影响我开发。不管怎么样,我都想坚持下去,其实我现在是奔着写一本小册的标准去的,说不定未来某天我真的会出本小册。毕竟 35 岁危机不是闹着玩儿的,提前搞搞副业总是好的,加油哟~
觉得不错可以 点个小星星 支持一下哦
Chrome扩展开发系列开篇的更多相关文章
- Chrome浏览器扩展开发系列之十四
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59 阅读:1361 评论:0 收藏:0 ...
- Chrome扩展开发(Gmail附件管理助手)系列之〇——概述
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报 分类: PPAPI(27) 通过将浏览器 ...
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
1. Google Chrome扩展简介 Google Chrome扩展是一种软件,以增强Chrome浏览器的功能. Google Chrome扩展使用HTML.JavaScript.CS ...
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之一——Chrome扩展的文件结构
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之四——核心功能的实现思路
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- 【转发】NPAPI学习(Firefox和Chrome扩展开发 )
NPAPI学习(Firefox和Chrome扩展开发 ) 2011-11-08 14:41:02 by [6yang], 1172 visits, 收藏 | 返回 Firefox和Chrome扩展开发 ...
- Chrome扩展开发基础教程(附HelloWorld)
1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...
随机推荐
- .NET周刊【8月第4期 2023-08-27】
国内文章 AgileConfig-1.7.0 发布,支持 SSO https://www.cnblogs.com/kklldog/p/agileconfig-170.html AgileConfig ...
- Record - Stirling Number / FK. & SK.
Part. 1 Stirling Number / FK. Def. 定义 \(\begin{bmatrix}n \\ m\end{bmatrix}\) 表示将 \(n\) 个元素分成 \(m\) 个 ...
- SpringSecurity-前后端分离教程
1.简介 Spring Security 是 Spring 家族中的一个安全管理框架.相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富. 一般来说中大型的项目都是使用 ...
- Hello-FPGA CoaXPress 2.0 FPGA HOST IP Core PCIe Demo User Manual
目录 1 说明 4 2 设备连接 7 3 VIVADO FPGA工程 8 4 调试说明 9 图 1‑1 资料目录 4 图 1‑2 VIVADO工程目录结构 5 图 1‑3 VS软件工程目录 5 图 1 ...
- select...for update到底是加了行锁,还是表锁?
前言 前几天,知识星球中的一个小伙伴,问了我一个问题:在MySQL中,事务A中使用select...for update where id=1锁住了,某一条数据,事务还没提交,此时,事务B中去用sel ...
- 字符串匹配|kmp笔记
很久之前学的了. 我很懒,不太喜欢画图. 做个笔记回忆一下: kmp 朴素比对字符串 所谓字符串匹配,是这样一种问题:"字符串 T 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置 ...
- sql server 截断和收缩所有用户数据库日志--用游标循环所有正常状态的用户数据库
在服务器运维活动中,我们经常需要做一项工具就是将好多年的用户数据库日志文件截断并收缩为最小,以节省大量的磁盘空间.当数据库只有一两个时可以手动操作,但数据库数量众多时,就需要采用sql脚本,批量化执行 ...
- 请教shell读写XML问题
请教shell读写XML问题 现有 123.xml文件,内容是:<?xml version="1.0" encoding="GBK"?><vi ...
- 聊聊如何在Java应用中发送短信
很多业务场景里,我们都需要发送短信,比如登陆验证码.告警.营销通知.节日祝福等等. 这篇文章,我们聊聊 Java 应用中如何优雅的发送短信. 1 客户端/服务端两种模式 Java 应用中发送短信通常需 ...
- 每天5分钟复习OpenStack(九)存储发展史
上一章节我们介绍了使用本地硬盘做kvm的存储池,这章开始将介绍下存储的发展历程,并介绍什么是分布式存储,为什么HDFS为有中心节点的分布式存储? 1.存储发展 在单机计算时代(大型机.小型机.微机), ...