siteextra 目录——对网站 HTML 源码做预处理
siteextra 是什么
siteextra/ 目录是 uWeb 三套域名定制机制的最后一环:
| 机制 | 按什么命名 | 作用时机 | 作用对象 |
|---|---|---|---|
| sitejs/ | 根域名 + .js | 页面加载后 | JS 行为定制 |
| sitecss/ | 根域名 + .css/.js | CSS :页面加载后;JS :HTML 解析前 | 样式 + 前置脚本 |
| siteextra/ | 完整域名 + .html | HTML 解析前 | 源码预处理 |
siteextra 和前两者最大的区别:
- 按完整域名命名(不是根域名)
- 文件是 HTML 格式(不是 JS/CSS)
- 可以访问页面的原始 HTML 源码做预处理
命名规则
siteextra/
├── baidu.com.html # 完整域名(不是根域名)
├── www.baidu.com.html # 更具体的完整域名(如果存在)
├── developer.android.com.html
└── github.com.html
注意:siteextra 和 sitejs/sitecss 的命名规则不一样:
- sitejs:
[根域名].js(如baidu.com.js) - sitecss:
[根域名].css - siteextra:
[完整域名].html(如www.baidu.com.html)
三种用法
用法一:直接插入 HTML 代码
siteextra 文件内容就是要插入到目标页面的 HTML。你可以:
- 添加自定义
<meta>标签 - 插入额外的
<link>引用 - 注入
<script>标签
用法二: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>
重写页面结构
- 移除某些
<script>标签 - 替换
<link rel="stylesheet">引用 - 注入新的 meta 标签
与重定向配合
default.redirect 处理的是网络层 URL 替换,siteextra 处理的是页面 HTML 内部的 URL 重写——比如把页面里写死的 CDN 地址替换成你自己的。
启用条件
- siteextra/ 目录存在(可能需要手动创建)
- 以完整域名命名的 .html 文件已放入
- 长按窗口管理 → 勾选"网址附加内容"
- 强制清空后台重启 uWeb
与其他配置的关系
请求 → 网络层(default.hosts/url.deny/default.redirect)
→ 收到 HTML → siteextra 预处理(如果匹配)
→ HTML 解析 → sitecss/*.js 前置脚本
→ 页面加载 → sitecss/*.css 样式 + sitejs/*.js 脚本
从早到晚、从粗到细的四层配置。