浏览器插件是一个单独进程,拥有很多电脑操作底层的能力,这是渲染进程所不能有的底层操作能力,这是插件的一切魅力源泉!
因此浏览器插件能做到很多页面业务js所无法做到的能力。

核心概念

popup,options,background,content_scripts

background 是后台,相当于进程,没有dom,不具备浏览器特性,所以很多浏览器api用不了,类似于 node 进程;
content_scripts 相当于页面上的js,可以直接操作页面;

popup : 插件启用时,固定在 地址栏右侧时,点击插件,就会弹出一个插件弹出页面,
前提是要配置,否则不会出现,开发模式下查看需要右键插件,点击【审查弹出页面】:

1
2
3
4
5
6
7
8
9
10
"action": {
"default_title": "Default Title",
"default_popup": "popups/popup.html",
"default_icon": {
"32": "icons/32.png",
"72": "icons/72.png",
"128": "icons/128.png",
"512": "icons/512.png"
}
},

插件调试

好用的调试工具

参考chromium的npm 工具调试 demo
参考web-ext

1
web-ext run -s src --target chromium --start-url 'https://www.baidu.com/'

以百度翻译demo说明

demo地址

demo地址

调试background

插件popup,options,background,content_scripts4个内容的不同调试方法

打开谷歌扩张程序界面,找到该浏览器插件,点击浏览器插件 中间的 server workder 等等字样,
此时浏览器会跳出一个控制台,此控制台可以调试 :

1
2
3
"background":{
"service_worker":"js/bg-wrapper.js"
},

更多参考

调试content

打开要翻译的页面控制台,找到 source,
source 子目录下,找到 Content scripts 就可以找到 content了。

调试小技巧

如果你不知道如何找到调试入口,可以在js中,写入 console.log 代码,当控制台出现此log后,
点击此log,就可以找到 js 在 source 中的位置。

此demo调试要点

此插件断点后,程序走完后,一定要再回到当初要翻译句子的页面,才会弹出alert;

插件刚加载到浏览器上时,可能不报错,后面用着用着,可能就报错了,有些报错并不影响使用,你可以清除旧的报错,重新查看新的报错。

移除、重新加载插件时,在旧的页面翻译时,在以前就打开的页面翻译时,或在以前就翻译过的页面时,可能会出现问题,重新打开一个新的页面进行翻译即可。

demo讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"manifest_version": 3,
"name": "bdtranslate",
"version": "1.0",
"description": "百度翻译插件",
"icons":{
"128":"img/icon.png",
"48":"img/icon.png",
"16":"img/icon.png"
},
"background":{
"service_worker":"js/bg-wrapper.js"
},
"permissions":[
"contextMenus",
"tabs"
],
// 百度翻译时需要请求 百度翻译网关,跨域发送请求,解除限制
"host_permissions": [
"http://api.fanyi.baidu.com/"
],
"content_scripts":[
{
"matches":["<all_urls>"],
// 相当于作用于目标页面的js
"js":["js/content.js"]
}
]
}

黑知识

background 无法使用jquery

因为background是一个后台进程,类似node,没有dom,因此不能使用jquery。
当然也不能使用ajax,因为只有浏览器 ajax XMLHttpRequest 是 浏览器属性。

插件能力

打印、网络请求(cookie、header 等)、标签页、处理页面内容、浏览器右键、浏览器下载、浏览器代理、vpn、获取电脑系统、电池信息、电脑桌面截屏、操作电脑文件;

参考与demo

自己开发的谷歌插件

跨域Cookie转发 v3
可结合koa写的一个后台来测试cookie:
配合后台demo - koa-demo 的 verdaccio-login 分支

其他

官网
非常好【干货】Chrome插件(扩展)开发全攻略
chrome extension 开发入门指南
官网示例 Chrome Extensions samples

chrome浏览器插件开发视频教程

插件示例 - chrome-cookie-extence cookie携带 v2

插件示例 - chrome-extension-cookie cookie转发 v3

插件示例 - Header Modifier monorepo方案挺好 cookie转发 v3

chrome-extension-cookie 一键搞定 cookie 跨域访问

百度翻译开放平台
chrome extension 开发入门指南

参考chromium的npm 工具调试 demo
参考web-ext

谷歌官网的中文翻译

油猴

先领略下油猴的魅力:
油猴插件怎么用?最全使用教程(可能),推荐几个小众的脚本

再看下油猴的开发入门,里面的 github 与 greasyfork 同步讲的还是不错的
油猴脚本开发从入门到精通 P0 开发环境配置与脚本分发

过一遍文档:
爬猴从入门到实战!
油猴脚本编写教程

看下官网:
油猴官网(开发)文档

插件下载
Greasy Fork - 脚本资源