uWeb 中文文档 下载 App

sitejs 域名特定脚本——让每个网站行为都定制化

什么是 sitejs

sitejs/ 目录是 uWeb 最像"油猴"的功能——你可以为每个域名写独立的 JavaScript 脚本,这些脚本会自动在匹配域名的页面上执行。和油猴的区别是:不需要额外安装扩展,原生支持,性能更好,百万级脚本也不会拖慢浏览器。

文件命名规则

脚本文件必须以根域名命名,放在 sitejs/ 目录下:

sitejs/
├── baidu.com.js
├── tieba.baidu.com.js
├── github.com.js
└── example.com.js

匹配优先级

启用条件

  1. 脚本文件已放入 sitejs/ 目录
  2. 长按窗口管理按钮,勾选"执行网址用户脚本"
  3. 强制清空后台重启 uWeb(重要!)

脚本执行时机

sitejs/ 下的脚本在页面加载时自动注入执行,相当于油猴脚本的 @match 只匹配根域名下的所有 URL。你可以在脚本里自由使用 DOM API、fetch、WebSocket 等。

示例:移除百度首页某些元素

// sitejs/baidu.com.js
(function() {
    'use strict';
    
    // 移除首页顶部横幅
    setTimeout(function() {
        var banners = document.querySelectorAll('.s-top-left-new, .s-top-right-new');
        banners.forEach(function(el) { el.remove(); });
    }, 500);
    
    // 修改搜索框占位文字
    var input = document.getElementById('kw');
    if (input) input.placeholder = '搜索...';
})();

配合 sitecss 使用

sitecss/ 目录的样式文件命名规则和 sitejs 完全相同(根域名)。额外地,sitecss/ 下以根域名命名的 .js 文件会在页面 HTML 解析前第一时间装载——这比 sitejs/ 的脚本更早执行,适合做"防检测"或"预处理"。

sitecss/
├── baidu.com.css       # 百度的样式覆盖
└── baidu.com.js        # 百度的前置脚本(HTML 解析前执行)

default.css 兜底

如果访问的域名在 sitecss/ 里没有匹配的 CSS 文件,且 sitecss/ 目录下存在 default.css,则自动应用 default.css 的样式。这个机制通常用来实现夜间模式:

siteextra 预处理

siteextra/ 目录的 .html 文件用于对指定域名的 HTML 源代码做预处理:

siteextra/
├── baidu.com.html      # 注意这里是完整域名,不是根域名
└── github.com.html

这个文件的规则和 sitejs/sitecss 不同:

对非 HTTP URL 的支持

sitejs/、sitecss/、sitecss/ 下以 .js 结尾的文件、sitecss/ 下以 .css 结尾的文件、siteextra/ 下以 .html 结尾的文件,都可以作用于非 HTTP URL——包括本地文件、浏览器界面本身等。

这意味着你甚至可以为配置目录下的 HTML5 应用(如 PDF 阅读器、EPUB 阅读器)写定制脚本。

性能保证

官方文档明确声明:即使 sitejs/ 目录下有百万级脚本文件存在,对浏览器性能也没有影响。脚本匹配用的是高效的域名哈希查找,不是逐个正则匹配。

下一章

继续了解脚本扩展体系: