ScriptCat脚本匹配规则优化:从@include到@match的兼容性升级
scriptcat 脚本猫,一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat
在ScriptCat脚本管理项目中,开发者反馈了一个关于网址匹配规则的典型问题。该问题揭示了MV3扩展规范下脚本注入匹配机制的重要变化,值得广大脚本开发者关注。
问题现象分析
原始脚本中使用了@include
指令尝试匹配Bing搜索的网址:
// @include *://*.bing.com/*
但在实际运行中发现无法正确匹配目标网址。经过测试,将指令修改为@match
后问题得到解决:
// @match *://*.bing.com/*
技术背景解析
这个现象源于浏览器扩展规范的演进:
-
MV3规范限制:现代浏览器扩展逐步采用MV3(Manifest V3)规范,其对脚本注入的网址匹配采用了更严格的Match patterns标准
-
指令差异:
@include
传统支持更灵活的正则匹配@match
遵循标准的匹配模式语法
-
兼容性建议:对于需要跨浏览器、长期维护的脚本,推荐优先采用
@match
指令
最佳实践建议
-
匹配模式语法:
- 使用
*
作为通配符 - 明确协议头(http/https)
- 完整域名层级
- 使用
-
多浏览器适配:
// @match *://*.bing.com/*
// @match *://www.bing.com/*
- 调试技巧:
- 在脚本管理界面验证匹配结果
- 使用浏览器开发者工具检查注入情况
升级迁移指南
对于现有脚本的维护者:
- 检查所有
@include
指令 - 转换为标准的match pattern语法
- 保留重要域名的多个变体匹配
- 在更新日志中注明兼容性变更
通过这次优化,不仅解决了特定网站的匹配问题,也为脚本的长期可维护性奠定了基础。理解浏览器扩展规范的这些变化,有助于开发者编写出更健壮、兼容性更好的用户脚本。
scriptcat 脚本猫,一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考