尝试开发谷歌浏览器扩展,medium 免费阅读器,目前主要是需要对请求进行拦截,修改,
[github 仓库]https://github.com/meijintao233/medium-reader-extension
将一些常用的 API 记录如下:
manifest.json
主要是设置一些位置,展示信息,类似微信小程序的配置 app.json。
Permissions: 设置一些需要获取权限的功能
browser_action: 设置 icon、界面等,浏览器级的扩展,界面 html 和页面的 html 是两个隔离的环境
page_action: 设置 icon、界面等,页面级的扩展,界面 html 和页面的 html 是两个隔离的环境
background: 设置 js 脚本等
content_script
前台脚本,不可跨域,会注入到页面中,可以操作当前页面的 dom 等
background_script
后台脚本,可跨域,一般会需要从 content_script 中发送信息过来,再发跨域请求
page_action
页面级的扩展,可控制显隐,特定页面显示
可绑定 onClick 事件,在点击扩展图标时执行,但是如果有 html 界面则该事件不生效
browser_action
浏览器级扩展
可绑定 onClick 事件,在点击扩展图标时执行,但是如果有 html 界面则该事件不生效
chrome api
tabs
get 获取标签页详情
sendMessage 方法 向指定标签页中的 content_script 发送消息
excuteScript 可以注入 js 脚本 参数是 (tabid,{file:[]})
connect 用于所属扩展与 content_scirpt 的连接进行通信
create 创建新标签页
duplicate 复制标签页
query 获取标签页
highlight 标签页高亮
update 更新标签页属性
move 移动标签页 根据 index 从 0 开始计数
remove 关闭标签页
storage
sync 对浏览器同步功能生效
local 对本机生效
get
set
clear
remove
getBytesInUse 获取使用空间
onChange 发生变化触发
runtime 相当于运行时功能
getBackgroundPage 获取该扩展的 background 界面的 window 对象,并将对象以回调形式传入
getManifest 获取 manifest.json 信息
getUrl 将相对地址转换成绝对地址
reload 重新加载扩展
connect 用于 content_scirpt 连接所属扩展进行通信
getPlatformInfo 获取平台信息
sendMessage 方法 extensionId 参数 向其他扩展发送信息
onInstalled 扩展安装成功或更新触发
onSuspend 页面卸载前触发
onConnect 从其他扩展或者 content_script 发起连接时触发
onMessage 从其他扩展或者 content_script 接收消息时触发
extension
getViews 获取该扩展界面下的所有 window 对象,包括 background 界面
getBackgroundPage 获取该扩展的 background 界面的 window 对象
getUrl 将相对地址转换成绝对地址
通信、请求拦截
- Web request
有 onBeforeSendHeaders,onHeadersReceived 支持修改 header 信息,onCompleted 表示请求完成等事件
接受三个参数,分别是回调(回调中能获取请求的信息),filter 数组(type,urls (使用匹配模式),),额外页面信息(blocking,extraheaders,requestheader,responseheaders 等),blocking 模式才能对请求进行修改,需要 return blocking 对象