请求事件
首先,一个请求的生命周期是这样的:

利用 webRequest 接口,可以监听图中的事件,插入自己的处理。
知识点:
1. webRequest 需要在 background 中使用
2. 调用方式
1 | var callback = function(details) {...}; |
3. blocking 参数
blocking 会将回调函数设置为同步处理,请求会等待回调完成。使用该参数需要在 permission 中添加 webRequestBlocking 权限。
举例: 替换网站的 JS 文件
1. 声明权限
编辑 manifest.json,添加 permission
1 | "permissions": [ |
2. 添加后端 文件
首先在 manifest.json 中添加 background 文件
1 | "background": { |
3. webRequest 脚本
1 | chrome.webRequest.onBeforeRequest.addListener( |
解释一下上面的后端代码:
- 监听 符合规定请求 的
onBeforeRequest事件 - 这2个参数是回调函数,通过参数
details来判断每一个请求url,如果以origin.js结尾,将用扩展中准备好的fake.js替换。换句话说,将原始网站的 JS 替换为假的 JS - 对于用户来讲,通过查看源码,看到的仍然是
<script src="origin.js"></script> - 通过 DevTools 的 network 查看,会发现
url已经变为fake.js - 第3个参数过滤被监听的请求,支持通配符
* - 第4个参数为扩展参数,
blocking说明这是 同步 处理,请求会等待回调函数完成