Skip to content

jsAppend

在现有响应内容体后面插入指定内容(仅对响应类型 content-type 包含 javascript,且包含响应内容体的状态码(如 200/500 等)有才效)

⚠️ 注意:204、304 等无响应内容体的请求不受影响

规则语法

txt
pattern jsAppend://value [filters...]
参数描述详细文档
pattern匹配请求 URL 的表达式匹配模式文档
value文本或二进制内容,支持以下类型:
• 目录/文件路径
• 远程 URL
• 内联/内嵌/Values内容
操作指令文档
filters可选过滤器,支持匹配:
• 请求URL/方法/头部/内容
• 响应状态码/头部
过滤器文档

配置示例

内联方式

txt
www.example.com/path1 jsAppend://(Hello) file://(-test-)
www.example.com/path2 jsAppend://(Hello) file://(-test-) resType://js
www.example.com/path3 jsAppend://(Hello) file://(-test-) resType://css
  • 请求 https://www.example.com/path1/to 响应内容变成 -test-<script>Hello</script>
  • 请求 https://www.example.com/path2/to 响应内容变成 -test-Hello
  • 请求 https://www.example.com/path3/to 响应内容变成 -test-

内嵌/Values方式

txt
``` body.txt
Hello world.
```
www.example.com/path1 jsAppend://{body.txt} file://(-test-)
www.example.com/path2 jsAppend://{body.txt} file://(-test-) resType://js
www.example.com/path3 jsAppend://{body.txt}) file://(-test-) resType://css
  • 请求 https://www.example.com/path1/to 响应内容变成 -test-<script>Hello world.</script>
  • 请求 https://www.example.com/path2/to 响应内容变成 -test-Hello world.
  • 请求 https://www.example.com/path3/to 响应内容变成 -test-

本地/远程资源

txt
www.example.com/path1 jsAppend:///User/xxx/test.js
www.example.com/path2 jsAppend://https://www.xxx.com/xxx/params.js
# 通过编辑临时文件
www.example.com/path3 jsAppend://temp/blank.js

为注入的脚本设置 <script> 标签属性

通过 jsAppend 注入到 HTML 页面的脚本,Whistle 会自动为其包裹 <script> 标签。若需要为该标签设置额外的属性,如 nomodulemoduledeferasynccrossorigin 等,可以使用 lineProps 参数进行配置。

txt
www.example.com/path1 jsAppend://https://www.xxx.com/xxx/params.js lineProps://nomodule
www.example.com/path2 jsAppend://https://www.xxx.com/xxx/params.js lineProps://module
www.example.com/path3 jsAppend://https://www.xxx.com/xxx/params.js lineProps://defer
www.example.com/path4 jsAppend://https://www.xxx.com/xxx/params.js lineProps://async
www.example.com/path5 jsAppend://https://www.xxx.com/xxx/params.js lineProps://crossorigin

属性说明与示例

属性用途说明配置示例
nomodule传统浏览器中执行,不支持 ES 模块的浏览器会运行此脚本lineProps://nomodule
module声明为 ES 模块,支持模块化导入lineProps://module
defer异步加载,在文档解析完成后执行lineProps://defer
async异步加载,下载完成后立即执行lineProps://async
crossorigin启用跨域资源共享(CORS)模式lineProps://crossorigin

关联协议

  1. 在响应内容前面注入内容:reqAppend
  2. 在 JavaScript 类型的响应内容前面注入内容:jsAppend
  3. 替换 JavaScript 类型的响应内容:jsBody