全局脚本 js/ 目录与远程脚本 default.rjs
全局脚本目录 js/
js/ 目录下的 JavaScript 文件会在所有网站上执行,与 sitejs/ 的"域名特定"正好对应。适合写那些"所有网站都要跑"的通用逻辑。
基础用法
- 在配置目录下创建
js/文件夹 - 把想要全局执行的
.js文件放进去 - 勾选"执行网址用户脚本"(和 sitejs 共用同一个开关)
- 强制清空后台重启 uWeb
多脚本叠加
js/ 目录下可以放任意数量的脚本,它们会按文件名顺序依次加载执行。这种叠加机制让你可以:
- 把不同功能拆成独立的小脚本
- 方便地启用/禁用某个功能(移动或删除文件)
- 和 sitejs 的域名特定脚本互不干扰
示例:全局去广告脚本
// js/global-adblock.js
(function() {
'use strict';
// 隐藏常见广告容器
var adSelectors = [
'iframe[src*="ads"]',
'iframe[src*="ad."]',
'.advertisement',
'.ad-banner',
'[class*="ad-"]',
'[id*="advert"]'
];
function hideAds() {
adSelectors.forEach(function(selector) {
document.querySelectorAll(selector).forEach(function(el) {
el.style.display = 'none';
});
});
}
// 初始执行
hideAds();
// 监听动态加载
var observer = new MutationObserver(hideAds);
observer.observe(document.body, { childList: true, subtree: true });
})();
远程脚本 default.rjs
有时候你不想把脚本直接写在本地,而是想远程加载,或者想实现"脚本切换"的效果。default.rjs 就是干这个的。
配置格式
default.rjs 文件每行一个远程脚本 URL,或者是一个本地脚本路径。
https://example.com/remote-script.js
file:///data/user/0/info.torapp.uweb/files/js/local-script.js
用途
- 在线脚本市场:把常用脚本集中托管在一个服务器
- 脚本版本管理:更新服务器上的脚本就全网生效
- 按需加载:default.rjs 可以通过其他脚本动态修改
default.rjs 的进阶用法:脚本切换
default.rjs 的一个巧妙用法是配合书签或特色服务实现"一键切换脚本集"。例如:
- default.rjs 第一行写
scripts.active(一个本地文件) - 当你想切换到"重内容模式"时,把
scripts.active指向内容增强脚本集合 - 当你想切换到"轻量浏览模式"时,把
scripts.active指向去广告脚本集合 - 重启 uWeb 生效
脚本加载顺序
uWeb 的脚本加载顺序是:
- sitecss/ 下的
.js文件(HTML 解析前,域名特定前置脚本) - default.rjs 远程脚本
- js/ 目录下的全局脚本
- sitejs/ 目录下的域名特定脚本
- 页面自身的
<script>标签
脚本激活模式
uWeb 有一个独创的"脚本激活模式"——脚本执行后被激活,此后自动作用于同类网址。这个机制让临时脚本(比如从特色服务跳转的解析脚本)不需要手动保存就能持续生效。
详见 脚本激活。