sitejs 脚本不生效怎么办
排查清单
当你在 sitejs/ 里放了脚本但它"什么都没做"时,按顺序检查这 6 件事:
1. 文件放对目录了吗
- sitejs/ 目录在
/data/data/info.torapp.uweb/files/sitejs/ - 不是在其他子目录里
- 不是在 Termux 的 home 目录里
2. 命名符合规则吗
脚本文件必须以根域名命名,以 .js 结尾:
✅ github.com.js
✅ baidu.com.js
✅ tieba.baidu.com.js(更具体的匹配优先)
❌ github.js(缺少 .com)
❌ my-script.js(不是域名)
❌ 随意命名.js
3. 开关打开了吗
- 长按窗口管理按钮
- 确保勾选了"执行网址用户脚本"
- 如果同时使用 sitecss/ 样式,也勾选"使用网址用户样式"
4. 重启了吗
uWeb 配置文件的加载遵循"强制清空后台重启"的铁律。你修改了 sitejs 里的脚本后:
- 强制关闭 uWeb(设置 → 应用 → 强制停止,或最近任务里划掉)
- 重新打开 uWeb
- 再访问目标网站
没重启 = 配置根本没被重新加载。
5. 检查优先级冲突
如果多个脚本都匹配同一个域名,最长文件名优先:
tieba.baidu.com.js会覆盖baidu.com.js- 如果你想让
baidu.com.js也生效,要检查tieba.baidu.com.js里有没有阻止执行的逻辑
6. 脚本内容没有语法错误
这是最常见也最难发现的问题——如果 JS 有语法错误,浏览器会静默失败,不执行后续代码:
// 错误示例:少了一个括号
(function() {
console.log('hello';
})();
// SyntaxError: missing ) after argument list
// 整个文件的代码都不会执行!
解决方法:
- 把脚本复制到电脑上,在 Chrome/Firefox 里打开 F12 → Console 测试
- 或者在 Termux 里用
node -c script.js检查语法
进一步排查
用控制台确认
uWeb 没有明显的控制台功能,但你可以:
- 在脚本开头加一行
alert('脚本开始执行') - 重启后访问目标网站
- 如果弹出 alert → 脚本已执行,问题在后续代码
- 如果没有弹出 → 脚本根本没被加载
检查 sitecss/ 下的 .js
sitecss/ 下也可以放 .js 文件(HTML 解析前执行的前置脚本)。如果 sitecss/[域名].js 里有错误,会不会影响 sitejs/ 的执行?理论上应该不会,但实际场景可以试试临时移走 sitecss/ 下的文件再测试。
检查脚本激活模式
如果之前激活过脚本(脚本激活模式),可能激活的脚本和你手写的 sitejs 有冲突。尝试:
- 长按窗口管理 → 取消所有脚本相关勾选
- 重启
- 只勾选"执行网址用户脚本"
- 再测试
检查是否被拦截
如果脚本用了 fetch 或 XMLHttpRequest 请求第三方资源:
- 检查 default.hosts / url.deny 有没有拦截目标域名
- 检查是否开启了"拦截外链脚本"(可能间接影响)
脚本生效的标志
当你完成所有正确配置后,脚本生效的唯一标志是:
- 脚本里的代码实际执行了(alert 弹窗、元素改变、控制台输出等)
uWeb 没有单独的"脚本已加载"提示。