跳转到正文
返回门户

匹配规则详解 ​

四条指令共同决定应用在哪些页面运行,求值顺序:先 @match 圈定范围,再 @include 收窄,最后 @exclude / @exclude-match 排除。即:

命中 = 命中任一 @match 且(未声明 @include 或命中任一 @include)且 不命中任何 @exclude / @exclude-match

已启用应用、热注入与 liveDebug 选择目标标签页都按这套规则求值。注意这与油猴里 @include 「追加运行页面」的含义不同:在这里 @include 只会缩小范围,想追加页面请再写一条 @match。

// @match background 是保留字而非 URL 规则:它不参与任何页面匹配求值(识别时大小写不敏感、容忍引号包裹),只负责把应用的运行环境切到后台沙箱(见「运行环境:background」)。剔除保留字后剩余的 URL 型 @match 才进入上述求值流程;纯后台应用(只声明保留字)没有页面注入分支,因此也不适用「不写 @match 默认 <all_urls>」的回落规则。@include / @exclude / @exclude-match 只约束页面分支,对后台分支无效。

Match Pattern(@match / @exclude-match) ​

格式为 <scheme>://<host>/<path>,* 只能出现在特定位置:

写法含义
https://*.commerce.com/*commerce.com 任意子域名下所有 https 页面
*://seller.seller-platform.com/*该域名下 http 与 https 页面
<all_urls>所有页面(不写任何 @match 时的默认值)

常见错误:host 部分 * 只能单独出现或作为最左前缀(*.commerce.com 合法、commerce.* / *commerce.com 不合法);path 部分必须以 / 开头(https://commerce.com 缺路径,应写 https://commerce.com/*);scheme 只能是小写的 * / http / https / file / ftp。不合法的 pattern 会在编译时报错并指出原因。

Glob(@include / @exclude) ​

普通通配符语法,* 匹配任意字符序列、? 匹配单个字符,可以出现在任何位置,例如 *://*.commerce.com/bg* 或 *login*。glob 与完整 URL(含协议、查询串)整串比较,大小写不敏感,因此按路径关键字过滤时首尾通常要带 *。

调试建议 ​

  • 应用列表的「匹配规则」列会汇总四类指令,hover 可以看到全部规则
  • 注入没生效时先查四件事:应用是否启用、URL 是否命中 @match、声明了 @include 时是否命中、是否被 exclude 排除
  • 在 IDE 里用 liveDebug 验证时,系统按同一套规则选择目标标签页