模块暂不可用: 此动态功能尚未由只读迁移站支持。
[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=2
&type=sidebar
&override={$override}&theme=https://cdn.scpwiki.com/theme/en/basalt/normalize-min.css
&css={$css}" style="display: none"></iframe>
[[/embed]]
[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=2
&type=sidebar
&override={$override}&theme=https://oxygennine.github.io/Peroxide/CSS/Interwiki/Interwiki.css
&css={$css}" style="display: none"></iframe>
[[/embed]]
隐藏Saving Pages
WikiJump include 未展开: 跨站引用未启用(:oxygennine:peroxide:layout-header-center)
WikiJump include 未展开: 跨站引用未启用(:oxygennine:peroxide:palette-dark)
只要油猴能跑就支持 如果需要对应的使用教程,请前往版本主页 在这里跳转
本项目GitHub主页见此
web版链接
web版线路2
v1.1.1版本:
修复
tabview的tab中放入中文会取消后缀]]的高亮的问题;- 各种文本中间的维基语法
1 高亮丧失的问题。
更新
- 为无加速器/魔法的用户更新了一个国内可以直连的安装/链接线路(如果还不能安装的话请使用魔法/源代码复制)
- 如果您的页面出现了404的情况,由于路径变化,请重新安装或更新脚本
- 增加了更好的微信聊天框组件的代码补全
// ==UserScript==
// @name H2O2 Wikidot Editor (Universal)
// @namespace https://github.com/wasd243/SCP-Foundation-editor-web
// @version 2.0.1
// @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://raw.githack.com/wasd243/SCP-Foundation-editor-web/gh-pages/index.html';
var IFRAME_ID = 'h2o2-editor-frame';
var OBSERVER_KEY = '__h2o2_observer__';
// ── 消息同步:iframe → textarea ───────────────────────────
window.addEventListener('message', function (event) {
if (event.origin !== 'https://raw.githack.com' && 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 已启动');
})();[[div class="mn-container true
dark
" style="—bg-opacity:1
"]]
如何安装油猴
[[div class="sl-container alignl true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignl true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]


[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignl true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]
[[div_ class="inputText 我真服了
"]]
我真服了
[[div class="inputMore 我真服了
"]]
[[/div]]
[[/div]]
[[/div]]
如果这个链接也失效了,请使用魔法,你知道怎么用的。
以防万一在顶部给一次直连链接:
其实是两个greasyfork的链接,如果都不行就用魔法,你知道怎么做的,实在不行你就在油猴添加新脚本,把源代码复制过去
线路1
线路2
如果连不上需要创建新脚本复制源代码,请复制“源代码”tab里的代码,那里面对应页面的链接是国内可以直连的镜像。
魔法链接:点这里跳转进入链接后点击文件右上角的RAW即可
[[div class="mn-container true
dark
" style="—bg-opacity:1
"]]
国内直连线路
[[div class="sl-container alignl true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignl true
"]]
[[/div]]
[[div_ class="inputText 请确认你的浏览器不是IE/360,如果是的话,请更换其他在更新的/支持油猴插件的正常浏览器(比如Edge或者chrome)
"]]
请确认你的浏览器不是IE/360,如果是的话,请更换其他在更新的/支持油猴插件的正常浏览器(比如Edge或者chrome)
[[div class="inputMore 请确认你的浏览器不是IE/360,如果是的话,请更换其他在更新的/支持油猴插件的正常浏览器(比如Edge或者chrome)
"]]
[[/div]]
[[/div]]
[[/div]]
[[div class="mn-container true
dark
" style="—bg-opacity:1
"]]
油猴注入失败/打不开
[[div class="sl-container alignl true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]

[[div class="sl-container alignr true
"]]
[[/div]]
[[div class="sl-container alignr true
"]]
[[/div]]
[[div_ class="inputText 油猴的这个界面最开始把我也坑了,我还寻思怎么都这么暴力了还不行:(
"]]
油猴的这个界面最开始把我也坑了,我还寻思怎么都这么暴力了还不行:(
[[div class="inputMore 油猴的这个界面最开始把我也坑了,我还寻思怎么都这么暴力了还不行:(
"]]
[[/div]]
[[/div]]
[[/div]]
1. 如等宽字、显示源文本2. 译注:此处加粗文本原文为必须,但“在发布的作品中必须带有版权模块”并不是本站现行的规定,为避免可能带来的误解,此处修改文本且在译注中注明。
同理,下文中所有带有相同含义的词汇被全部替换为应该或其他意义相近的词汇。3. 译注:technical-content-policy当前仅适用于英文站,此处仅供参考。但如无特殊需求,请尽量遵守该部分守则。
同理,下文中的一些“约定俗成但本站尚未强制性规定”的内容也请尽量遵守,本文在此不做过多注释。4. 译注:或SCP 维基等其他同义内容。5. 译注:或多张。6. 译注:该部分当前仅适用于英文站,此处仅供参考。7. 译注:如果该作品是一篇与他人的合著,我们也建议你在attribution-metadata进行标注。8. 译注:如果该译文是一篇与他人的合译,我们也建议你在attribution-metadata-translation进行标注。






