浏览器插件是一个单独进程,拥有很多电脑操作底层的能力,这是渲染进程所不能有的底层操作能力,这是插件的一切魅力源泉!
因此浏览器插件能做到很多页面业务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-ext1
web-ext run -s src --target chromium --start-url 'https://www.baidu.com/'
以百度翻译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 | { |
黑知识
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-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 开发环境配置与脚本分发
看下官网:
油猴官网(开发)文档