uWeb 中文文档 下载 App

sitejs 脚本不生效怎么办

排查清单

当你在 sitejs/ 里放了脚本但它"什么都没做"时,按顺序检查这 6 件事:

1. 文件放对目录了吗

2. 命名符合规则吗

脚本文件必须以根域名命名,以 .js 结尾:

✅ github.com.js
✅ baidu.com.js
✅ tieba.baidu.com.js(更具体的匹配优先)

❌ github.js(缺少 .com)
❌ my-script.js(不是域名)
❌ 随意命名.js

3. 开关打开了吗

4. 重启了吗

uWeb 配置文件的加载遵循"强制清空后台重启"的铁律。你修改了 sitejs 里的脚本后:

  1. 强制关闭 uWeb(设置 → 应用 → 强制停止,或最近任务里划掉)
  2. 重新打开 uWeb
  3. 再访问目标网站

没重启 = 配置根本没被重新加载。

5. 检查优先级冲突

如果多个脚本都匹配同一个域名,最长文件名优先:

6. 脚本内容没有语法错误

这是最常见也最难发现的问题——如果 JS 有语法错误,浏览器会静默失败,不执行后续代码:

// 错误示例:少了一个括号
(function() {
    console.log('hello';
})();
// SyntaxError: missing ) after argument list
// 整个文件的代码都不会执行!

解决方法:

进一步排查

用控制台确认

uWeb 没有明显的控制台功能,但你可以:

  1. 在脚本开头加一行 alert('脚本开始执行')
  2. 重启后访问目标网站
  3. 如果弹出 alert → 脚本已执行,问题在后续代码
  4. 如果没有弹出 → 脚本根本没被加载

检查 sitecss/ 下的 .js

sitecss/ 下也可以放 .js 文件(HTML 解析前执行的前置脚本)。如果 sitecss/[域名].js 里有错误,会不会影响 sitejs/ 的执行?理论上应该不会,但实际场景可以试试临时移走 sitecss/ 下的文件再测试。

检查脚本激活模式

如果之前激活过脚本(脚本激活模式),可能激活的脚本和你手写的 sitejs 有冲突。尝试:

  1. 长按窗口管理 → 取消所有脚本相关勾选
  2. 重启
  3. 只勾选"执行网址用户脚本"
  4. 再测试

检查是否被拦截

如果脚本用了 fetch 或 XMLHttpRequest 请求第三方资源:

脚本生效的标志

当你完成所有正确配置后,脚本生效的唯一标志是:

uWeb 没有单独的"脚本已加载"提示。

下一章