uWeb 中文文档 下载 App

siteextra 目录——对网站 HTML 源码做预处理

siteextra 是什么

siteextra/ 目录是 uWeb 三套域名定制机制的最后一环:

机制按什么命名作用时机作用对象
sitejs/根域名 + .js页面加载后JS 行为定制
sitecss/根域名 + .css/.jsCSS :页面加载后;JS :HTML 解析前样式 + 前置脚本
siteextra/完整域名 + .htmlHTML 解析前源码预处理

siteextra 和前两者最大的区别:

  1. 按完整域名命名(不是根域名)
  2. 文件是 HTML 格式(不是 JS/CSS)
  3. 可以访问页面的原始 HTML 源码做预处理

命名规则

siteextra/
├── baidu.com.html              # 完整域名(不是根域名)
├── www.baidu.com.html          # 更具体的完整域名(如果存在)
├── developer.android.com.html
└── github.com.html

注意:siteextra 和 sitejs/sitecss 的命名规则不一样:

三种用法

用法一:直接插入 HTML 代码

siteextra 文件内容就是要插入到目标页面的 HTML。你可以:

用法二:textarea 预处理模式

这是最强大的用法——让 siteextra 文件以 <textarea> 或 <div><textarea> 结尾:

<!DOCTYPE html>
<html>
<head>
    <script>
        // 预处理逻辑:读取 textarea 里的原始 HTML,做修改后输出
    </script>
</head>
<body>
    <textarea></textarea>
</body>
</html>

uWeb 会自动把页面的原始 HTML 源码附加到这个 textarea 元素后面。你的脚本可以读取 textarea 内容,预处理(修改、增强、过滤),然后输出处理后的 HTML。

用法三:非 HTTP URL 也生效

siteextra/ 下的 .html 文件,和 sitecss/ 下的 .js 文件、sitejs/ 下的 .js 文件一样,可以作用于非 HTTP URL——包括本地文件、浏览器界面本身等。这意味着你甚至可以给 HTML5 应用做定制预处理。

预处理能做什么

移除或修改页面中的 JS 标签

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 预处理逻辑
});
</script>
<textarea></textarea>

重写页面结构

与重定向配合

default.redirect 处理的是网络层 URL 替换,siteextra 处理的是页面 HTML 内部的 URL 重写——比如把页面里写死的 CDN 地址替换成你自己的。

启用条件

  1. siteextra/ 目录存在(可能需要手动创建)
  2. 以完整域名命名的 .html 文件已放入
  3. 长按窗口管理 → 勾选"网址附加内容"
  4. 强制清空后台重启 uWeb

与其他配置的关系

请求 → 网络层(default.hosts/url.deny/default.redirect)
    → 收到 HTML → siteextra 预处理(如果匹配)
    → HTML 解析 → sitecss/*.js 前置脚本
    → 页面加载 → sitecss/*.css 样式 + sitejs/*.js 脚本

从早到晚、从粗到细的四层配置。

下一章