模块暂不可用: 此动态功能尚未由只读迁移站支持。
隐藏Saving Pages
WikiJump include 未展开: 本地数据库中没有引用的站点(:oxygennine:peroxide:layout-header-center)
WikiJump include 未展开: 本地数据库中没有引用的站点(:oxygennine:peroxide:palette-dark)
历代版本迭代。
当前版本(tag):v1.1.4
列表暂不可用: 此 ListPages 查询尚未由只读迁移站支持。
[[note]]
重要:这不是批量编辑脚本,这这是一个用于数据连接、改善编辑体验的脚本,请不要使用此脚本进行批量编辑,请不要违反站规。如果你的GitHub显示404,大概率是版本迁移导致的,请前往更新脚本,目前的网页版链接为:
点击这里跳转
[[/note]]
Wikidot 的编辑栏过于反人类,试试这个
点开编辑栏后加载可能有点慢,加载出来了如果是空的就说明在同步内容,请您耐心等待
由于wikidot的加载速度,请您耐心等待gif加载好,可能时间有点长
本项目采用AGPLv3协议授权
测试已通过,脚本和编辑器源代码仓库
点这里直接前往网页版编辑器
这里是wasd243, 脚本性能,“夺舍”暴力覆盖wikidot原窗口测试完毕。
正如你所见,这个基于GitHub Page的脚本可以完全“夺舍”wikidot的原生编辑栏,打开即用
唯一缺点是无法重制wikidot的编辑锁定,时间会一直进行,所以请在15分钟到了以后及时按下“重新创建编辑锁定”按钮
页面版式:过氧化物 基础版式
代码编辑:Code Mirror 6 lezer
代码高亮数据:Wikidot代码高亮为我,也就是wasd243,参考浏览器配色自制
CSS和HTML代码高亮引用源代码:
import { cssLanguage } from "@codemirror/lang-css"
import { htmlLanguage} from "@codemirror/lang-html"|油猴脚本早期版本源代码归档(不建议使用)|
// ==UserScript==
// @name H2O2 Wikidot Editor (Universal)
// @namespace https://github.com/wasd243/SCP-Foundation-editor-web
// @version 2.0.0
// @description 加了个看门狗
// @icon https://scpsandboxcn.wikidot.com/local--files/peroxide-hyroperoxide/%E6%97%A0%E5%B0%BD%E5%82%AC%E5%8C%96%E5%89%82%EF%BC%88%E7%8E%84%E5%AD%A6%E4%BB%A3%E7%A0%81%E9%95%87%E5%9C%BA%E5%AD%90%EF%BC%89
// @author wasd243
// @match *://*.wikidot.com/*
// @license AGPLv3
// @grant none
// @run-at document-end
// ==/UserScript==
(function () {
'use strict';
var EDITOR_URL = 'https://wasd243.github.io/SCP-Foundation-editor-web/index.html';
var IFRAME_ID = 'h2o2-editor-frame';
var OBSERVER_KEY = '__h2o2_observer__';
// ── 消息同步:iframe → textarea ───────────────────────────
window.addEventListener('message', function (event) {
if (event.origin !== 'https://wasd243.github.io') return;
if (!event.data || event.data.type !== 'h2o2-update') return;
var ta = document.getElementById('edit-page-textarea');
if (!ta) return;
ta.value = event.data.payload;
ta.dispatchEvent(new Event('input', { bubbles: true }));
});
// ── 注入逻辑 ──────────────────────────────────────────────
function inject(ta) {
if (document.getElementById(IFRAME_ID)) return;
var waited = 0;
var poller = setInterval(function () {
waited += 100;
var content = ta.value;
if (content.length > 0 || waited >= 3000) {
clearInterval(poller);
doInject(ta, content);
}
}, 100);
}
function doInject(ta, content) {
if (document.getElementById(IFRAME_ID)) return;
console.log('H2O2: 注入,内容长度', content.length);
ta.style.setProperty('display', 'none', 'important');
var toolbar = document.getElementById('wd-editor-toolbar-panel');
if (toolbar) toolbar.style.setProperty('display', 'none', 'important');
document.querySelectorAll('.change-textarea-size').forEach(function (el) {
el.style.setProperty('display', 'none', 'important');
});
var iframe = document.createElement('iframe');
iframe.id = IFRAME_ID;
iframe.src = EDITOR_URL;
iframe.style.cssText = [
'width: 100%',
'height: 70vh',
'min-height: 520px',
'border: none',
'border-radius: 4px',
'display: block',
'margin-bottom: 8px'
].join('; ');
ta.parentNode.insertBefore(iframe, ta);
iframe.addEventListener('load', function () {
setTimeout(function () {
try {
iframe.contentWindow.postMessage(
{ type: 'h2o2-init', payload: content }, '*'
);
console.log('H2O2: 内容已推送,长度', content.length);
} catch (e) {
console.warn('H2O2: postMessage 失败', e);
}
}, 500);
});
}
// ── 启动一个 MutationObserver 实例 ───────────────────────
function startObserver() {
// 断开旧的
if (window[OBSERVER_KEY]) {
try { window[OBSERVER_KEY].disconnect(); } catch (e) {}
}
var obs = new MutationObserver(function () {
var ta = document.getElementById('edit-page-textarea');
var iframe = document.getElementById(IFRAME_ID);
if (!ta && iframe) {
console.log('H2O2: 编辑结束,清理 iframe');
iframe.remove();
return;
}
if (ta && !iframe) {
inject(ta);
}
if (ta) {
ta.style.setProperty('display', 'none', 'important');
}
});
obs.observe(document.documentElement, { childList: true, subtree: true });
window[OBSERVER_KEY] = obs;
console.log('H2O2: Observer 已(重)启动');
}
// ── 看门狗:每秒检查 Observer 是否还活着 ─────────────────
// Warning: Wikidot AJAX is a monster. Do NOT remove this watchdog unless you want to lose your soul (and your drafts).
// 原理:给 Observer 实例打一个存活标记,
// 如果标记消失或 Observer 对象丢失,立刻重建。
setInterval(function () {
// 检查 Observer 是否还挂在 window 上
if (!window[OBSERVER_KEY]) {
console.warn('H2O2: Observer 丢失,重建中…');
startObserver();
return;
}
// 顺带检查:有 textarea 但没有 iframe,说明注入失败了,补注入
var ta = document.getElementById('edit-page-textarea');
var iframe = document.getElementById(IFRAME_ID);
if (ta && !iframe) {
console.warn('H2O2: 发现未注入的 textarea,补注入');
inject(ta);
}
// 有 textarea 就持续压制
if (ta) {
ta.style.setProperty('display', 'none', 'important');
}
// 没有 textarea 就清理僵尸 iframe
if (!ta && iframe) {
iframe.remove();
}
}, 1000);
// ── 启动 ──────────────────────────────────────────────────
startObserver();
// 页面加载时立即检查一次
var ta = document.getElementById('edit-page-textarea');
if (ta) inject(ta);
console.log('H2O2: v2.0.0 已启动');
})();卧槽gif太多把浏览器卡爆了,放不下了就先不放了
上手这玩意儿有多简单?

点这里下载油猴并安装对脚本
1. 点击GitHub右上方的
RAW按钮2. 会进入一个油猴TamperMonkey界面
3. 点击
Install或者Reinstall好了,可以用了
前面的一键夺舍已经演示了如何启用油猴子脚本,为了防止你还是不太明白,在这里留了一个图片版说明。
可以看到啊,这里的油猴GUI有这么几个选项:
- Enabled
2 - 脚本名
- Find new script
3 - Create a new script…
4 - Please send a donation
5 - Utilities
6 - Dashboard
7
装好脚本以后来到一个wikidot页面是可以看到这个无尽催化剂
这里需要注意,在wikidot.com结尾的页面显示可以使用了以后,
✅Enabled并不是开启脚本按钮,而是“脚本已开启”的意思
❌Disabled也不是关闭脚本按钮,而是“脚本已关闭”的意思
这也是之前脚本启动比较玄学的根本原因
每次开启脚本的时候,记得强制刷新一次页面:
ctrl+F5 或 command+shift+r
一个在点击编辑之前判断脚本是否运行的好方法
按下 F12 或者 command+option+I 打开浏览器开发工具界面,这里以Microsoft edge为例。
|查看图片|

可以看到这里的日志:
Observer 已经(重)启动
v2.0.0 已启动
简易看门狗的提示,防止wikidot的AJAX局部刷新删掉注入的脚本,避免重复开关脚本,用户可以手动在油猴的GUI里关闭
另外的一些日志
H2O2: 发现未注入的 textarea,补注入
暴力逻辑,注入所有没有被注入的 textarea
H2O2: 注入,内容长度 3321
H2O2: 内容已推送,长度 3321
注入/推送日志
位置: 2944-2963, 内容位置: 2954-2961
匹配到Wikidot颜色标签: Disabled
颜色代码:xxxxx, 内容:"xxxxx"
颜色代码实时渲染日志,用于在用户更改颜色后进行同步
如果页面卡死或者怎么也加载不出来编辑栏,记得关闭油猴脚本并刷新|两次|页面
这个更简单
[[note]]
点击上方的 CODE TOOLS即可进入快捷代码界面
功能和wikidot原生差不多,用来替代被夺舍的wikidot原生代码界面
更多的功能:
1. 代码补全:你只需要输入[中括号——[中括号便可以触发简易的代码补全机制,比如输入f自动补全对应的代码,操作大概是:
[ —> [f -> Enter -> [[footnote]]这是一条脚注[[/footnote]]
2. 代码高亮:自动识别对应的维基代码进行高亮,在css模块中自动启动css高亮库,在html模块中自动启用html高亮库
3. 代码折叠:点击行数旁边的小箭头,找到对应的代码,块,根据对应的闭合标签渲染折叠,折叠后的代码可以随意复制,不受影响
4. 调色板:当你输入16进制颜色时,比如这一段:
###FF0000|123##
gif太多卡死了卧槽
请在这个链接查看对应的gif图片
演示模板
[[/note]]
1. Microsoft Edge浏览器或Chromium插件里都有2. 已开启3. 找脚本4. 创建新脚本5. 捐款6. 工具箱7. 仪表盘8. 我在这里列出了所用图标“无尽贪婪”Avaritia模组1.7.10原版的GitHub链接9. 这里有点绕,我当时以为是wikidot的屎山AJAX发力了把我的脚本关了,结果一看是我手动关的10. 可能是油猴的bug11. 为了确保您写好的稿子被完美上传至wikidot,请您在“保存”时记得展开(虽然不展开也没影响)本地备份一下当然是最好的,因为我删掉了本地缓存防XSS








