Chrome扩展开发基础教程(附HelloWorld)
1 概述
Chrome
扩展开发的基础教程,代码基于原生JS+H5
,教程内容基于谷歌扩展开发官方文档。
2 环境
Chrome 88.0.4324.96
Chromium 87.0.4280.141
Brave 1.19.84
FireFox 85.0
WebStorm 2020.3.2
Manifest V3
3 开发环境准备
开发扩展建议使用WebStorm
,推荐WebStorm
的原因是能够补全,在设置中的Libraries
中可以下载chrome
的库,这样就能够补全了:
另一个建议使用的是VSCode
,但是笔者目前没有找到让VSCode
补全的方式,希望知道的可以在评论指出补充一下。
当然其实扩展开发并没有规定使用哪一个IDE
,常用的Web
开发IDE
比如HBuilder
也是可以的,看个人喜好了。
4 创建manifest.json
首先创建一个空白文件夹:
mkdir FirstExtension
cd FirstExtension
接着创建一个叫manifest.json
的文件,直接在WebStorm
中创建即可,文件内容如下:
{
"name": "First Extension",
"description": "This is my first extension",
"version": "1.0",
"manifest_version": 3
}
打开浏览器进入管理扩展程序,并开启开发者模式,选择Load unpacked
,打开刚才创建的FirstExtension
文件夹:
这样就可以看到扩展了。
事实上最简单的扩展只需要一个manifest.json
,来描述扩展最基本的一些属性以及行为,因此这样就算完成HelloWorld了。
5 添加弹出界面
现在扩展什么界面也没有,现在可以尝试着给扩展添加一个点击就弹出的界面,首先修改manifest.json
,添加action
:
{
"name": "First Extension",
"description": "This is my first extension",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "popup.html"
}
}
在与manifest.json
同级目录下创建popup.html
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
这样点击扩展就会弹出对应文字了:
6 添加图标
在manifest.json
中添加icons
字段:
{
"name": "First Extension",
"description": "This is my first extension",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "popup.html"
},
"icons": {
"16": "icons/16.png",
"32": "icons/32.png",
"48": "icons/48.png",
"128": "icons/128.png"
}
}
图标文件可以从文末的源码处获取,重新加载后就可以看到扩展的图标改变了。
图标一共有四个,16*16
是扩展页面中显示的图标:
而32*32
是可选的,为了防止从48*48
的大小中缩小造成失真,48*48
是在扩展管理页面中显示的,例如:
而128*128
是Chrome Web Store
中显示的。
7 发布
最后一步是发布,扩展有两种安装方式,一种是通过本地安装,一种是通过Chrome Web Store
安装,使用后一种方式的话,需要注册成为Chrome
网上应用开发者:
这里为了方便就本地打包发布了,在插件管理页面选择Pack extension
:
选择包含了manifest.json
的文件夹,在这里就是刚才创建的FirstExtension
:
点击打包后,会出现两个文件:
一个是crx
,就是扩展的打包文件,一个是pem
,创建新版本的扩展时需要使用。
浏览器中拖拽crx
文件就可以安装了,一般来说Chrome/Chromium/Brave
因为基于相同内核应该都不会出现问题,至于FireFox
,可以参考一下文末的附录。
8 源码
9 附录:FireFox
FireFox
目前最新版本(85.0
)的扩展目前不支持Manifest V3
,因此如果需要开发FireFox
扩展,需要使用Manifest V2
版本,也就是:
"manifest_version": 2
当然还有一些字段上的区别,具体可以参考这里的文档。
另外笔者测试了一下FireFox
安装这个Demo
扩展好像不能直接拖拽crx
文件,需要打开一个叫about:debugging
的链接,在设置中选择Load Temporary Add-on
:
选择manifest.json
文件即可安装。
Chrome扩展开发基础教程(附HelloWorld)的更多相关文章
- PostgreSQL 扩展开发基础教程
搭建基础结构 安装扩展 sudo apt-get install postgresql-contribcreatedb stupsql stucreate extension pg_buffercac ...
- Chrome扩展开发(Gmail附件管理助手)系列之〇——概述
目录: 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扩展中脚本的运行机制 ...
- AndoridSQLite数据库开发基础教程(5)
AndoridSQLite数据库开发基础教程(5) 创建SQLite数据库 使用SQLiteManager创建数据库的操作步骤如下: (1)双击SQLiteManager工具,弹出SQliteMana ...
- 【转发】NPAPI学习(Firefox和Chrome扩展开发 )
NPAPI学习(Firefox和Chrome扩展开发 ) 2011-11-08 14:41:02 by [6yang], 1172 visits, 收藏 | 返回 Firefox和Chrome扩展开发 ...
- Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- RPG游戏开发基础教程
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...
随机推荐
- 一层逻辑的网页scrapy爬虫
1 import scrapy 2 import re 3 from fake_useragent import UserAgent 4 5 6 class DoubanSpider(scrapy.S ...
- [Python学习笔记]正则表达式总结
常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...
- 数据库分表自增ID问题
.................................................................................................... ...
- 边缘计算k8s集群之SuperEdge
什么是边缘计算? 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务.应 ...
- 微信小程序切换标签改变样式
微信小程序切换标签改变样式 wxml <!--顶部导航栏--> <view class="swiper-tab"> <view class=" ...
- Shiro反序列化漏洞检测、dnslog
目录 信息收集 poc 参考 信息收集 poc # pip install pycrypto import sys import base64 import uuid from random impo ...
- Omega System Trading and Development Club内部分享策略Easylanguage源码 (第二期)
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 我们曾经在前文(链接),为大家分享我们精心整理的私货:"System Trading and ...
- 剑指 Offer 09. 用两个栈实现队列 +java中栈和队列的使用
剑指 Offer 09. 用两个栈实现队列 题目链接 class CQueue { private Stack<Integer> sta1; private Stack<Intege ...
- Bullet碰撞检测
DBVT 在bullet 引擎中是很基础且重要的一个数据结构,本质上是一个可以动态更新的AABB树. 碰撞响应的分析 约束分类:可积约束,不可积约束 ,摩擦力(见[1]第四章) 整个bullet在动力 ...
- python分离不同后缀名的文件
功能描述 根据文件后缀名处理文件,分别拷贝到对应的文件夹下 example >>> .jpg 后缀 和.mp4 后缀文件处理 代码实现 #!/usr/bin/env python # ...