uWeb 中文文档 下载 App

全局脚本 js/ 目录与远程脚本 default.rjs

全局脚本目录 js/

js/ 目录下的 JavaScript 文件会在所有网站上执行,与 sitejs/ 的"域名特定"正好对应。适合写那些"所有网站都要跑"的通用逻辑。

基础用法

  1. 在配置目录下创建 js/ 文件夹
  2. 把想要全局执行的 .js 文件放进去
  3. 勾选"执行网址用户脚本"(和 sitejs 共用同一个开关)
  4. 强制清空后台重启 uWeb

多脚本叠加

js/ 目录下可以放任意数量的脚本,它们会按文件名顺序依次加载执行。这种叠加机制让你可以:

示例:全局去广告脚本

// 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 的一个巧妙用法是配合书签或特色服务实现"一键切换脚本集"。例如:

  1. default.rjs 第一行写 scripts.active(一个本地文件)
  2. 当你想切换到"重内容模式"时,把 scripts.active 指向内容增强脚本集合
  3. 当你想切换到"轻量浏览模式"时,把 scripts.active 指向去广告脚本集合
  4. 重启 uWeb 生效

脚本加载顺序

uWeb 的脚本加载顺序是:

  1. sitecss/ 下的 .js 文件(HTML 解析前,域名特定前置脚本)
  2. default.rjs 远程脚本
  3. js/ 目录下的全局脚本
  4. sitejs/ 目录下的域名特定脚本
  5. 页面自身的 <script> 标签

脚本激活模式

uWeb 有一个独创的"脚本激活模式"——脚本执行后被激活,此后自动作用于同类网址。这个机制让临时脚本(比如从特色服务跳转的解析脚本)不需要手动保存就能持续生效。

详见 脚本激活。

下一章