文档
扩展支持 Chrome 120 及更高版本和 Firefox 136 及更高版本。
允许用户脚本
浏览器只有在获得单独的权限后,才会在网页上运行扩展的 JavaScript。没有这项权限时,规则的样式仍然生效,但规则的 JavaScript 不会运行;此时弹出窗口和设置页面会提示如何开启。
- Chrome 138 及更高版本: 打开扩展详情(
chrome://extensions→ User JavaScript and CSS → “详情”),开启“允许用户脚本”。不需要开发者模式。 - Chrome 120–137: 在
chrome://extensions右上角开启“开发者模式”。这是 Google 的要求,适用于所有使用用户脚本的扩展。 - Firefox: 在弹出窗口中点击“授予用户脚本权限”,然后在浏览器对话框中确认。Firefox 还可能不给扩展访问网站的权限:这时弹出窗口会显示“允许访问网站”,设置页面顶部的横幅中会显示“允许”。
规则
在本扩展中,“规则”是指在与其 URL 模式匹配的网页上运行的 JavaScript 和/或 CSS 代码。
URL 模式
- 模式的格式为
<scheme>://<host>/<path>:https://site.com/*; - 多个模式之间用逗号分隔:
https://one.com/*, https://two.com/*; - 排除项以
!标记:!https://site.com/admin/*。
扩展会把每个模式转换为浏览器的匹配模式格式,弹出窗口和图标徽标显示的正是浏览器实际运行规则的位置。
带协议的模式基本按原样使用:
| 写法 | 规则运行于 |
|---|---|
https://site.com/* | site.com 和 www.site.com,不包括其他子域名 |
https://*.site.com/* | site.com 及其所有子域名 |
https://site.com/path | site.com 和 www.site.com 上以 /path 开头的页面 |
https://site.com | 整个 site.com 和 www.site.com |
http*://site.com | 通过 http 和 https 访问的 site.com 和 www.site.com |
http://localhost:*/* | 任意端口上的 localhost |
不带协议的模式表示该网站及其子域名,http 和 https 均适用:
| 写法 | 规则运行于 |
|---|---|
site.com, *site.com*, *.site.com | site.com 及其所有子域名 |
www.site.com | www.site.com 和 site.com |
пример.рф | пример.рф 及其子域名 |
site.com/path | site.com 及其子域名上以 /path 开头的页面 |
localhost:3000 | 端口 3000 上的 localhost |
/admin | 任意网站上路径中包含 /admin 的页面 |
* | 任意网站 |
带协议的排除项严格按原样使用:https://site.com/*, !https://www.site.com/* 会在 site.com 上运行,但不会在 www.site.com 上运行。不带协议的排除项遵循上表:!site.com/admin 会排除 site.com 及其子域名上的 /admin。
Firefox 中的端口。 Firefox 的模式不能指定端口,因此端口会被去掉:localhost:3000 会在任意端口的 localhost 上运行,带端口的排除项会排除该主机的所有端口。针对单个端口上任意网站的模式(*://*:8080/*)会变成针对所有网站的模式,因此在 Firefox 中会标红。
标红的是浏览器不接受的模式:主机名中间带 *(https://shop*.site.com/*、https://site.*/*),或者扩展无法在其上运行的协议(chrome-extension://、ws://)。这样的模式会被跳过,规则的其他模式照常生效。如果某个排除项被拒绝,规则在修正之前不会在任何地方运行,否则它会在您排除的页面上运行。
JavaScript 属性
JavaScript 面板标题栏中的按钮:
隔离环境:脚本能访问页面 DOM,但无法访问页面的变量和函数。所有框架:脚本也会在地址与规则匹配的框架中运行。每个框架都会单独与规则的模式进行匹配。加载开始时运行:脚本在 DOM 构建之前运行;不开启时在 DOM 构建之后、图片和框架等资源加载之前运行。注意,对这样的脚本不会触发DOMContentLoaded事件。
样式属性
样式面板标题栏中的按钮:
Sass 预处理器:开启时(默认)样式按Sass或SCSS编译,语法根据代码中是否含有{;}来判断;关闭时样式按原样应用。为所有属性自动添加 !important:为编译后样式的每个属性添加!important。应用于嵌套框架:样式也会应用到页面内的框架中。默认开启。应用于 shadow DOM:样式也会应用到带有开放 shadow DOM 的 Web 组件内部。默认关闭。
样式会立即在已打开的标签页中生效,无需重新加载页面:编辑样式、启用规则或修改其地址时都是如此。
共享规则
“共享规则”可以在不同规则之间建立依赖关系,并明确控制它们的加载顺序。任何规则都可以在规则菜单中标记为“共享规则”,这样它就会出现在其他规则的模块列表中。被引入的规则只取其 JS 和 CSS 内容,规则的其他属性会被忽略。
历史版本
扩展会保存规则在最近 10 次保存前的代码:见规则菜单中的“历史版本”。选中的版本会回到编辑器中,保存后才会生效。版本只保存在当前浏览器中:不会被导出,也不会保存到云端。
其他特性
- 当规则是共享规则并被其他规则引入时,其“规则已启用”标记会被忽略;
- “保存到云端”标记仅表示该规则包含在云端备份中;
- 规则菜单中的“设为新规则模板”:新建的规则会以该规则的代码和属性为起点。
模块
可以为规则附加外部 JS 和 CSS 模块,它们会在规则之前运行。支持 https://... 链接,资源类型由扩展自动识别。
模块内容会被下载并保存在扩展的存储中。更新方式有两种:在模块编辑窗口中点击“重新下载”,或者按计划自动更新,即“库更新”设置:手动、每天或每周。如果下载失败,会保留模块的上一个版本。
存储
本地存储
- “下载 JSON”会把您的规则、库和设置保存到文件中。
- “上传 JSON”会打开文件中的规则和库列表。“添加所选项”会把勾选的项目添加到您现有的规则和库中:已有的规则会被替换,其旧代码保留在历史版本中。“全部替换”会用文件中的规则和库替换您现有的规则和库。
浏览器同步
如果浏览器开启了同步,可以把备份上传到您的 Google 或 Firefox 账号的云端。这种方式无需额外登录或设置:storage.sync 是扩展的标准同步存储类型。备份需要手动上传和下载。
其容量限制为 100 KB,因此上传前会从副本中移除外部模块的内容和所有生成的数据,再对结果进行压缩。如果空间仍然不够,请对不需要备份的规则关闭“保存到云端”。
智能体(MCP)
AI 智能体(Claude Code、Codex、Gemini CLI、Cursor、VS Code、Claude Desktop 等)可以通过本地 MCP 服务器 user-js-css-mcp 读取和修改您的规则。该功能为实验性功能。
- 打开设置页面的 MCP 部分,开启“允许 MCP 连接”。
- 选择您的客户端。该部分会给出现成的命令、一键安装链接或配置代码块,连接密钥已经填好。
- 重启客户端:客户端会自行启动服务器,该部分会显示客户端已连接。
服务器运行在您的计算机上(127.0.0.1),需要 Node.js 18+ 或 Bun 1.2+。扩展和服务器在处理任何请求之前都会校验连接密钥,因此计算机上的其他程序无法使用它们。点击密钥旁边的“更换”会断开所有使用旧密钥配置的客户端。
智能体可以列出、读取、搜索、创建和修改规则与库,查找在某个页面上运行的规则,查看规则为何不生效,将规则备份到文件并从文件恢复,以及将规则恢复到历史版本。