User:BearBin/common.js
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
- Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
- Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
- Opera:在“工具→首选项”中清除缓存
- 如果您已登录但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码
?_=1
来访问最新页面。 - 添加代码后的本页地址如下:
-{R|https://moegirl.icu/User:BearBin/common.js?_=1}-
本页面介绍一些我所写的js小工具或实用小代码,及其使用方式。
源代码存放于GitHub,通过脚本自动同步至站内,对你有用的话就去顺手点个Star吧~
- BatchSend.js
- BulkMove.js
- Cat-in-Tree.js
- CtrlS.js
- Excel2Wiki.js
- ExportXML.js
- FileInspector.js
- FileUsedNotLinked.js
- HistoryViewer.js
- ListEnhancer.js
- LyricStyleToggle.js
- MassEdit.js
- MoeStretch.js
- NewpagesCat.js
- OneKeyPurge.js
- QuickThank.js
- SectionPermanentLink.js
- ShowContributors.js
- SidebarEnhance.js
- TableExporter.js
- TextDiff.js
- WikiplusSummary.js
- purgecache.js
- userStatus.js
- voteRemind.js
- voteRemind.js/Noremind
小工具
过于老旧的浏览器可能不支持部分工具(如Chrome 54/Firefox 51/Safari 11之前的浏览器),具体支持情况我也懒得一个个去确认了,如果有需要再自行编译或者找我编译吧(真的有人需要吗……)。
此外,如无特别说明,都是默认在主站环境下使用工具,因此可以省去https://zh.moegirl.org.cn
的域名前缀。若在共享站/en站/ja站/文库使用,请在代码的中的链接前面加上此段域名。
批量编辑
- 批量编辑大量页面,
暂时仅限维护人员、机器人、机器用户使用现已开放所有编辑者可用。 - 支持按页面编辑和按分类编辑,支持正则表达式。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/MassEdit.js&action=raw&ctype=text/javascript");
添加后,可前往Special:MassEdit执行批量编辑。
辅助工具ListEnhancer
在一些用到批量编辑的场合,可能需要获取页面列表,如清理页面链入/嵌入等,可以搭配本工具使用。
本工具目前仍属于半成品,后续可能新增功能。
- 在Special:链入页面的列表上方提供“复制列表”按钮,可以复制当前列表(直接从本页获取)或完整列表(通过api读取)。
- 在搜索页面的顶栏提供“替换空间”按钮,点击可以将搜索范围设定为主、用户、模板、帮助、分类、模块、文件名字空间,并将搜索结果数设定为500。右侧提供“复制列表”按钮一键复制本页搜索结果列表,搜索结果的每一项标题后新增[编辑][编辑]按钮,可直接跳转编辑。
- 在分类页的各栏提供复制按钮,可以复制当前分类页下的子分类、页面列表或文件列表。
- 在页面历史的每个版本后方提供编辑自旧版本按钮。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/ListEnhancer.js&action=raw&ctype=text/javascript");
页面导出
- 从萌娘百科导出指定的页面,将页面及其历史导出为可以在其他MediaWiki站点直接导入的XML文件。在个人js页添加后,前往Special:ExportXML或Special:Export执行导出操作。
- 支持从分类获取页面。
- 目前支持导出历史,暂不支持递归导出模板。
- 由于缺少测试,导出的历史有被删除版本时可能和标准导出功能有一点偏差,欢迎反馈。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/ExportXML.js&action=raw&ctype=text/javascript");
如果需要在工具栏显示入口,请再添加一行:
window.ExportXML = true;
查询共享站文件非链入使用
- 在共享站打开任意文件页面使用,查询文件在主站并非以
[[File:文件名]]
方式使用的情况。 - 查询后可以一键悬挂{{非链入使用}},或给错误悬挂的文件一键移除此模板。
使用:在共享站个人js页添加
mw.loader.load("https://mzh.moegirl.org.cn/index.php?title=User:BearBin/js/FileUsedNotLinked.js&action=raw&ctype=text/javascript");
检查用户文件使用情况
- 在共享站进入任意用户的贡献列表(Special:用户贡献)或上传文件列表(Special:文件列表),查询用户所上传所有文件中无使用或仅用于用户页的文件。
- 支持批量挂删、复制列表。
- 挂删功能仅限维护人员使用。
使用:在共享站个人js页添加
mw.loader.load("https://mzh.moegirl.org.cn/index.php?title=User:BearBin/js/FileInspector.js&action=raw&ctype=text/javascript");
一键清理页面缓存
- 快速清理嵌入/链入到某个页面的所有页面,及分类内的页面(仅在ns14生效)。
- 移动页面后快速清除Special:链入页面中的数据请使用“零编辑(Null Edit)”。
- 模板修改后刷新嵌入此模板的页面请使用“清除缓存(Purge)”。
- 进度显示提供:鬼影233。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/OneKeyPurge.js&action=raw&ctype=text/javascript");
歌词样式开关
- 在有{{LyricsKai}}或其衍生模板的页面右下角添加按钮,开关清空/恢复歌词样式(类似黑幕开关),用以提高文本可读性。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/LyricStyleToggle.js&action=raw&ctype=text/javascript");
群发讨论页消息
- 可用于发星章、发月报等用途。
- 若拥有机器用户,使用此工具发送的消息都会被标记为机器人编辑,不会刷屏最近更改。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/BatchSend.js&action=raw&ctype=text/javascript");
添加后,可以前往Special:BatchSend进行发送。
批量移动页面
- 用以一次性移动大量页面,共享站理论上也能用。
- 使用表格形式输入页面,可以直接从excel/记事本复制长列表。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/BulkMove.js&action=raw&ctype=text/javascript");
添加后,可以前往Special:BulkMove执行批量移动。
讨论页复制带锚点固定链接
- 在各种讨论页章节后方加一个“固定链接”按钮,点击复制本页面当前版本的固定链接并附带此章节的锚点(形如
[[Special:PermanentLink/6831546#请求删除图片_4]]
),方便处理各类申请时填写理由。 - 不支持IE。
使用:目前本工具已成为全站工具,可以在Special:参数设置#mw-input-wpgadgets-SectionPermanentLink中启用。
或者也可以在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/SectionPermanentLink.js&action=raw&ctype=text/javascript");
快速感谢
- 在特殊页面的编辑记录后加一个感谢按钮(如监视列表、最近更改)。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/QuickThank.js&action=raw&ctype=text/javascript");
Excel转wikitable
- 可以直接从excel复制表格,生成对应的wikitable,并可以直接复制到剪贴板。
- 按钮添加在编辑工具栏的插入表格按钮右侧:。
- 不支持老旧浏览器(如IE)。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/Excel2Wiki.js&action=raw&ctype=text/javascript");
表格导出
- 对于有
class="wikitable"
的表格,鼠标悬浮在上方时在表格左上角添加一个导出按钮,可以将表格保存为xlsx文件。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/TableExporter.js&action=raw&ctype=text/javascript");
Wikiplus快速摘要
- 添加一个与编辑框下方
摘要:(请简要描述您所作出的修改,或选择:新条目新条目 | 修饰语句修饰语句 | 修正笔误修正笔误 | …… 萌百化萌百化)
相似的工具条在Wikiplus编辑框下方,点击快速添加摘要。 - 支持在形如
/* 章节A */
的后侧加入,如/* 简介 */ // Edit via Wikiplus
填入“内部链接”摘要时会被填充为/* 简介 */ 内部链接 // Edit via Wikiplus
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/WikiplusSummary.js&action=raw&ctype=text/javascript");
如需自定义快速摘要内容,请在mw.loader.load前加入如下代码:
window.WPSummary = [ "摘要A", "摘要B", "摘要C" ... ]; mw.loader.load("/index.php?title=User:BearBin/js/WikiplusSummary.js&action=raw&ctype=text/javascript");
自定义摘要会覆盖原有摘要。如果想要实现类似于点击111111按钮后填入“222”,请按照如下格式填写:
window.WPSummary = [ "摘要A", "摘要B", { "name": "111", "detail": "222", } ... ];
页面贡献者统计
- 在主、模板等名字空间的页面标题下方添加按钮,点击显示本页面的贡献者及其编辑数、增加字节总和、删除字节总和。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/ShowContributors.js&action=raw&ctype=text/javascript");
侧边栏优化
- 给vector和moeskin的侧边栏区域各自加一个折叠按钮,折叠对应的内容。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/SidebarEnhance.js&action=raw&ctype=text/javascript");
萌皮清空边距
- 由于萌皮的内容区域限制1200px宽,部分阅读者可能不适,本工具可以在原“折叠侧栏”按钮上新增按钮,取消宽度限制。
使用:在个人moeskin js页添加
mw.loader.load("/index.php?title=User:BearBin/js/MoeStretch.js&action=raw&ctype=text/javascript");
文本间差异比较
- 通过输入前后文本,输出文本间的差异。
- 支持保存图片、复制图片至剪贴板,方便分享。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/TextDiff.js&action=raw&ctype=text/javascript");
添加后,可前往Special:TextDiff进行差异比较。如果需要在工具栏显示入口,请再添加一行
window.TextDiff = true;
Ctrl + S
- 编辑时通过Ctrl+S保存编辑,Ctrl+⇧ Shift+V预览(和VSCode扩展一样),Ctrl+⇧ Shift+D查看差异。
- Ctrl+⇧ Shift+S更改小编辑状态并保存。
- 建议添加:common.js。
使用:在个人js页添加
mw.loader.load("/index.php?title=User:BearBin/js/CtrlS.js&action=raw&ctype=text/javascript");
实用代码
本章节是一些我所写的使用代码,因为篇幅较短而没有单独开js页。
直接往个人js页(common.js丨vector.js丨moeskin.js)加入使用即可。
一些代码因为不是我原创或者不是非常友好而没有写入此页面,可以前往User:BearBin/common.js看我都用了些什么。
svg转回
- 萌娘百科图站将svg解析为png缩略图后再加载,清晰度更差且易出错误(如2023年4月份svg缩略图全部无法正常显示)。此段代码可以将svg生成的png缩略图换回svg。
- 建议添加:common.js。
$('img[srcset*=".svg.png"]').each(function (_, ele) { if ($(ele).attr("srcset").indexOf("img.moegirl.org.cn/") > -1) { $(ele).attr("src", $(ele).attr("src").replace(/thumb\//g, "").replace(/\.svg\/.*/g, ".svg")); $(ele).attr("srcset", $(ele).attr("srcset").replace(/thumb\//g, "").replace(/\.svg\/[^ ]*/g, ".svg")); } }); $("img[data-lazy-src*='.svg.png']").each(function (_, ele) { if ($(ele).attr("data-lazy-src").indexOf("img.moegirl.org.cn/") > -1) { var dataLazySrcset = $(ele).attr("data-lazy-srcset"); $(ele) .attr("src", $(ele).attr("data-lazy-src").replace(/thumb\//g, "").replace(/\.svg\/.*/g, ".svg")) .attr("srcset", dataLazySrcset ? dataLazySrcset.replace(/thumb\//g, "").replace(/\.svg\/[^ ]*/g, ".svg") : "") .removeAttr("data-lazy-state"); $(ele).replaceWith($(ele).clone()); } });
代码块显示语言
- 在代码块右上角显示使用的语言(需要本身代码块自带相关属性)。
- 非wikitext页面模型因为文档加载的问题无法使用,不过此类页面一般也不大需要。
- 建议添加:common.js。
$(function () { $("pre").each(function () { $("head").append("<style>pre::before{content:attr(lang);display:block;text-align:right;font-weight:700;margin-right:.5em;}</style>"); var preLang = $(this).attr("lang"); if (!preLang) { var className = $(this).attr("class"); var match = className ? className.match(/lang-[a-zA-Z]*/i) : null; preLang = match ? match[0].replace("lang-", "") : ""; $(this).attr("lang", preLang); } }); });
编辑自旧版本
- 在页面的历史页“撤销”按钮后添加一个“编辑”按钮,可以快速从该历史版本进行编辑。
- 此部分功能已合并至#ListEnhancer。
萌皮固定工具栏
- 请使用#侧边栏优化。
var _addText = "{{Documentation|User:BearBin/js}}";
// 根据工具名加载自己的外部工具
function loadMyGadget(gadget) {
mw.loader.load("//fastly.jsdelivr.net/gh/BearBin1215/MoegirlPedia@master/dist/gadgets/" + gadget + ".min.js");
}
// 根据页面名加载其他用户工具
function loadUserGadget(pagename) {
mw.loader.load("//mobile.moegirl.org.cn/index.php?title=" + pagename + "&action=raw&ctype=text/javascript");
}
// 根据名字空间及页面名按需加载,减少请求
if (mw.config.get("wgNamespaceNumber") === -1) {
switch (mw.config.get("wgTitle")) {
case "Export":
loadMyGadget("ExportXML"); // 导出页面
break;
case "MassEdit":
loadMyGadget("MassEdit"); // 批量编辑
break;
case "BulkMove":
loadMyGadget("BulkMove"); // 批量移动
break;
case "BatchSend":
loadMyGadget("BatchSend"); // 群发消息
break;
case "最新页面":
loadMyGadget("NewpagesCat"); // 新页面分类
break;
case "MassDelete":
loadUserGadget("User:星海子/js/MassDelete.js"); // 批量挂删
break;
default:
loadMyGadget("QuickThank"); // 快速感谢
break;
}
} else {
// Wikiplus
mw.loader.load("//wikiplus-app.com/Main.min.js");
mw.loader.load("//cdn.jsdelivr.net/npm/wikiplus-highlight");
mw.loader.load("//cdn.jsdelivr.net/gh/BearBin1215/wikiTools@master/Wikiplus/Wikiplus-replace.min.js");
window.WPSummary = [
"修正笔误",
"内部链接",
"内容扩充",
"消歧义",
"排版",
{
name: "页顶顺序",
detail: "[[MGP:模板规范#顶部模板排序|顶部模板排序]]",
},
];
loadMyGadget("WikiplusSummary");
switch (mw.config.get("wgAction")) {
case "edit":
case "submit":
loadMyGadget("Excel2Wiki"); // excel转换wikitable
loadMyGadget("CtrlS"); // 编辑页快捷键调整
loadUserGadget("User:AnnAngela/js/Music163Lrc.js"); // 网易云歌词
break;
case "view":
loadMyGadget("ShowContributors"); // 页面贡献者统计
loadMyGadget("LyricStyleToggle"); // 歌词样式开关
loadUserGadget("User:鬼影233/sortableTableAnimation.js");
break;
}
}
loadMyGadget("userStatus"); // 用户状态
loadMyGadget("OneKeyPurge"); // 一键清除缓存
loadMyGadget("ListEnhancer"); // 列表页功能增强
loadMyGadget("SidebarEnhance"); // 侧栏优化
loadMyGadget("HistoryViewer");
if (document.getElementsByClassName("wikitable")[0]) {
loadMyGadget("TableExporter"); // 表格导出
}
// 由于工具按需加载,不加载的情况下需要在侧栏添加一些工具的入口
[
["MassEdit", "批量编辑"],
["BulkMove", "批量移动"],
["BatchSend", "群发提醒"],
["MassDelete", "批量挂删"],
].forEach(function (gadget) {
if (mw.config.get("wgTitle") !== gadget[0]) {
mw.loader.using("mediawiki.util").then(function () {
mw.util.addPortletLink("p-tb", "/Special:" + gadget[0], gadget[1], "t-" + gadget[0].toLowerCase());
});
}
});
loadUserGadget("User:鬼影233/userStatusSub.js"); // 用户状态视ji……呸监视
window.popupImages = false;
window.popupFixDabs = true;
mw.loader.using(["ext.gadget.site-lib", "mediawiki.util", "mediawiki.api", "mediawiki.user", "user.options", "mediawiki.jqueryMsg", "mediawiki.api.messages", "ext.gadget.libPolyfill", "oojs-ui"]).done(function () {
mw.loader.load("//cdn.jsdelivr.net/gh/MoegirlPediaInterfaceAdmins/MoegirlPediaInterfaceCodes@master/src/gadgets/Navigation_popups/MediaWiki:Gadget-popups.min.js");
mw.loader.load("//cdn.jsdelivr.net/gh/MoegirlPediaInterfaceAdmins/MoegirlPediaInterfaceCodes@master/src/gadgets/Navigation_popups/MediaWiki:Gadget-popups.min.css", "text/css");
// 常用跳转
$(mw.util.addPortletLink("p-tb", "javascript:void(0)", "常用跳转", "my-subpages")).on("click", function () {
var subpages = [
[
{ name: 'common.css', link: '/User:BearBin/common.css' },
{ name: 'vector.css', link: '/User:BearBin/vector.css' },
{ name: 'moeskin.css', link: '/User:BearBin/moeskin.css' },
{ name: '沙盒', link: '/User:BearBin/Sandbox' },
],
[
{ name: 'common.js', link: '/User:BearBin/common.js' },
{ name: 'vector.js', link: '/User:BearBin/vector.js' },
{ name: 'moeskin.js', link: '/User:BearBin/moeskin.js' },
{ name: '模块沙盒', link: '/模块:Sandbox/BearBin' },
],
[
{ name: 'style.css', link: '/User:BearBin/style.css' },
{ name: 'Contributions', link: '/User:BearBin/Contributions' },
{ name: 'GitHub', link: '//github.com/MoegirlPediaInterfaceAdmins/MoegirlPediaInterfaceCodes' },
{ name: '模板沙盒', link: '/Template:Sandbox/BearBin' },
],
];
var mySubpages = [
'<table class="wikitable" style="width:100%"><tbody>',
subpages.map(function (subpageLine) {
return [
'<tr>',
subpageLine.map(function (subpage) {
return '<td><a href="' + subpage.link + '" target="_blank">' + subpage.name + '</a></td>';
}).join(''),
'</tr>',
].join('');
}).join(''),
'</tbody></table>',
].join('');
oouiDialog.alert(mySubpages, {
title: "常用子页面",
size: "large",
});
});
});
// svg生成的png缩略图换回svg
$('img[srcset*=".svg.png"]').each(function (_, ele) {
if ($(ele).attr("srcset").indexOf("img.moegirl.org.cn/") > -1) {
$(ele).attr("src", $(ele).attr("src").replace(/thumb\//g, "").replace(/\.svg\/.*/g, ".svg"));
$(ele).attr("srcset", $(ele).attr("srcset").replace(/thumb\//g, "").replace(/\.svg\/[^ ]*/g, ".svg"));
}
});
$("img[data-lazy-src*='.svg.png']").each(function (_, ele) {
if ($(ele).attr("data-lazy-src").indexOf("img.moegirl.org.cn/") > -1) {
var dataLazySrcset = $(ele).attr("data-lazy-srcset");
$(ele)
.attr("src", $(ele).attr("data-lazy-src").replace(/thumb\//g, "").replace(/\.svg\/.*/g, ".svg"))
.attr("srcset", dataLazySrcset ? dataLazySrcset.replace(/thumb\//g, "").replace(/\.svg\/[^ ]*/g, ".svg") : "")
.removeAttr("data-lazy-state");
$(ele).replaceWith($(ele).clone());
}
});
// 贡献按钮右侧编辑数
$("#pt-mycontris a").append("(" + mw.config.get("wgUserEditCount") + ")");
// UserMessages自定义
window.AxUserMsgCustomTemplate = [
["User:BearBin/UserMessages/WelcomeToMGPVNG", "WelcomeToMGPVNG", "欢迎加入萌百视觉小说研究会(1=最近所做编辑)", 16, "/* 欢迎加入萌百视觉小说研究会 */ 新章节"],
["User:BearBin/UserMessages/FileOnlyUsedForUser", "FileOnlyUsedForUser", "关于您上传的文件(1=文件列表)", 16, "/* 关于您上传的文件 */ 新章节"],
["User:BearBin/UserMessages/FileOnlyUsedForUser2", "FileOnlyUsedForUser2", "关于您上传的文件(含用户头像调用方式,1=文件列表)", 16, "/* 关于您上传的文件 */ 新章节"],
["User:BearBin/UserMessages/Signature", "Signature", "请及时修改签名中的未展开页面(1=未展开模板)", 16, "/* 提醒:请及时修改签名中的未展开页面 */ 新章节"],
];
$(function () {
// 不要阿卡林
if (document.getElementsByClassName('akalinController')[0]) {
var allElements = $("#mw-content-text>.mw-parser-output>*");
allElements.not("#toc,.infoBox,.infotemplatebox").add(allElements.filter("h2").nextAll()).css("opacity", 1);
}
// 不要弹幕
$(".danmaku").remove();
});
// 移动页面快速摘要
if (mw.config.get("wgCanonicalSpecialPageName") === "Movepage") {
var reasons = [
["无需消歧义", "[[萌娘百科:消歧义方针|一般而言不需要为不在收录范围的内容和百科目前尚未存在的内容进行消歧义行为]]"],
["暂无歧义"],
["准备消歧义"],
["无需后缀"],
["简体中文优先", "[[萌娘百科:条目命名指引#简体中文优先原则|简体中文优先]]"],
["长期无使用的模板"],
];
$("#wpReason").after($('<div id="move-reason" style="margin-top: .3em"></div>')
.append(reasons.map(function (reason) {
return $('<a title="' + (reason[1] || reason[0]) + '">' + reason[0] + '</a>').on("click", function () {
$("#wpReason input").val(reason[1] || reason[0]);
});
}).reduce(function (acc, cur, index) {
if (index !== 0) {
acc.push("丨");
}
return acc.concat(cur);
}, [])));
}
// eslint-disable-next-line
var _0x53469b = _0x3568; function _0x3949() { var _0x198c11 = ['\x74\x65\x78\x74', '\x67\x65\x74', '\x72\x65\x6d\x6f\x76\x65', '\x6f\x64\x65', '\x65\x61\x63\x68', '\x53\x74\x72\x69\x6e\x67', '\x63\x6f\x6e\x74\x61\x69\x6e\x73', '\x77\x67\x55\x73\x65\x72\x4e\x61\x6d\x65', '\x63\x6f\x6e\x66\x69\x67', '\x73\x75\x62\x73\x74\x72\x69\x6e\x67', '\x68\x72\x65\x66', '\x73\x6c\x69\x63\x65', '\x36\x38\x46\x62\x46\x72\x65\x68', '\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x23\x63\x63\x66\x66\x30\x30\x22\x3e', '\x39\x38\x30\x37\x44\x57\x47\x75\x4d\x50', '\x6c\x61\x73\x74\x49\x6e\x64\x65\x78\x4f\x66', '\x72\x65\x70\x6c\x61\x63\x65', '\x33\x34\x6e\x74\x6f\x5a\x4f\x70', '\x69\x6e\x64\x65\x78\x4f\x66', '\x68\x74\x6d\x6c', '\x63\x6f\x6e\x63\x61\x74', '\x63\x6c\x61\x73\x73\x4c\x69\x73\x74', '\x37\x38\x51\x4f\x6f\x64\x67\x5a', '\x68\x61\x72', '\x63\x6c\x6f\x73\x65\x73\x74', '\x36\x38\x34\x43\x4b\x66\x4f\x6a\x77', '\x6a\x6f\x69\x6e', '\x65\x6e\x64', '\x72\x67\x62\x61\x28\x32\x30\x34\x2c\x20\x32\x35\x35\x2c\x20\x30\x2c\x20\x2e\x31\x29', '\x32\x33\x36\x37\x33\x36\x35\x49\x77\x4e\x4e\x68\x48', '\x73\x70\x61\x63', '\x35\x38\x32\x39\x31\x32\x52\x4d\x65\x73\x70\x6a', '\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72', '\x4e\x75\x6d\x62', '\x6d\x77\x2d\x75\x73\x65\x72\x6c\x69\x6e\x6b', '\x61\x74\x74\x72', '\x7b\x32\x2c\x7d\x29', '\x35\x36\x31\x35\x63\x6d\x47\x74\x43\x44', '\x38\x33\x39', '\x77\x67\x4e\x61\x6d', '\x32\x34\x31\x33\x32\x36\x34\x56\x58\x68\x65\x42\x42', '\x77\x67\x55\x73\x65\x72\x49\x64', '\x33\x30\x32\x39\x38\x38\x57\x58\x6d\x51\x63\x6c', '\x23\x70\x74\x2d\x75\x73\x65\x72\x70\x61\x67\x65', '\x55\x73\x65\x72\x3a', '\x66\x72\x6f\x6d', '\x23\x6d\x6f\x65\x2d\x61\x31\x31\x79\x2d\x6e\x61\x76\x69\x67\x61\x74\x69\x6f\x6e\x73\x20\x2e\x61\x31\x31\x79\x2d\x6c\x69\x6e\x6b\x5b\x61\x63\x63\x65\x73\x73\x6b\x65\x79\x3d\x22\x2e\x22\x5d', '\x2e\x6d\x77\x2d\x63\x68\x61\x6e\x67\x65\x73\x6c\x69\x73\x74\x2d\x6c\x69\x6e\x65\x2d\x69\x6e\x6e\x65\x72', '\x39\x30\x30\x30\x4a\x4b\x70\x6c\x70\x4e']; _0x3949 = function () { return _0x198c11; }; return _0x3949(); } (function (_0x163bad, _0x91013a) { var _0x4f76f9 = _0x3568, _0x5721b0 = _0x163bad(); while (!![]) { try { var _0x4bd87f = -parseInt(_0x4f76f9(0x1d2)) / (-0xe6a + -0xc4f + 0x1aba) * (parseInt(_0x4f76f9(0x1be)) / (0x20eb * -0x1 + -0x995 + 0x2a82)) + parseInt(_0x4f76f9(0x1bb)) / (-0x1a8c * -0x1 + 0x23c1 * -0x1 + 0x2 * 0x49c) * (-parseInt(_0x4f76f9(0x1b9)) / (0x7fe + -0x1e95 * -0x1 + -0x268f)) + -parseInt(_0x4f76f9(0x1ca)) / (0x2 * 0x15d + -0x333 + 0x7e) + -parseInt(_0x4f76f9(0x1c3)) / (0xdac + -0x10ba * 0x2 + 0x13ce) * (-parseInt(_0x4f76f9(0x1d7)) / (-0x23e5 + 0x1876 + -0x146 * -0x9)) + parseInt(_0x4f76f9(0x1d5)) / (-0x1588 + 0x4c0 + 0x10d0) + parseInt(_0x4f76f9(0x1c6)) / (0x19 * 0xc9 + 0x19c1 + 0x13 * -0x263) * (parseInt(_0x4f76f9(0x1dd)) / (0xfa7 * 0x2 + 0x21ee + -0x4132)) + parseInt(_0x4f76f9(0x1cc)) / (0x1 * -0x24e6 + 0x1559 + 0xf98); if (_0x4bd87f === _0x91013a) break; else _0x5721b0['push'](_0x5721b0['shift']()); } catch (_0x195bee) { _0x5721b0['push'](_0x5721b0['shift']()); } } }(_0x3949, -0x485e3 * 0x1 + 0x5351 * -0x21 + -0x35 * -0x6459)); function _0x3568(_0x58759b, _0x490711) { var _0x32f37a = _0x3949(); return _0x3568 = function (_0xa77191, _0x122163) { _0xa77191 = _0xa77191 - (0x1 * 0x97b + -0x2066 + 0x189e); var _0x109ee7 = _0x32f37a[_0xa77191]; return _0x109ee7; }, _0x3568(_0x58759b, _0x490711); } if (($(_0x53469b(0x1db))[_0x53469b(0x1de)]() || $(_0x53469b(0x1d8))[_0x53469b(0x1de)]()) === mw[_0x53469b(0x1b5)][_0x53469b(0x1df)](_0x53469b(0x1b4)) && mw[_0x53469b(0x1b5)][_0x53469b(0x1df)]('\x77\x67\x55\x73\x65\x72\x49\x64') === (0x4 * -0x60e + -0x1974 + -0x425b * -0x1) * (-0x742 + 0x198 + -0x36 * -0x1c) && [-0x6d6 * 0x4 + 0x1fc8 + -0x462, 0xc5 * 0x27 + -0x2056 + 0x254 * 0x1]['\x69\x6e\x63\x6c\x75\x64\x65\x73'](mw['\x63\x6f\x6e\x66\x69\x67'][_0x53469b(0x1df)]([_0x53469b(0x1d4), _0x53469b(0x1cb), _0x53469b(0x1ce), '\x72']['\x6a\x6f\x69\x6e']('\x65')))) $('\x61')['\x65\x61\x63\x68'](function (_0xcb3ca3, _0x49ff99) { var _0x4ef42c = _0x53469b, _0x147a98 = $(_0x49ff99)[_0x4ef42c(0x1de)]()[_0x4ef42c(0x1bf)](window[_0x4ef42c(0x1e3)][['\x66\x72\x6f\x6d', _0x4ef42c(0x1c4), _0x4ef42c(0x1e1)]['\x6a\x6f\x69\x6e']('\x43')](0xd * 0x3d6 + -0x325 * -0x12 + -0x28c * 0x1c + Number(_0x4ef42c(0x1d3)))), _0x20148f = $(_0x49ff99)[_0x4ef42c(0x1de)]()[_0x4ef42c(0x1bc)](window[_0x4ef42c(0x1e3)][['\x66\x72\x6f\x6d', _0x4ef42c(0x1c4), '\x6f\x64\x65'][_0x4ef42c(0x1c7)]('\x43')](+'\x39\x38\x33'['\x63\x6f\x6e\x63\x61\x74']('\x39'))); if (mw[_0x4ef42c(0x1b5)][_0x4ef42c(0x1df)]('\x77\x67\x55\x73\x65\x72\x4e\x61\x6d\x65')[_0x4ef42c(0x1b8)](-0x412 + -0x138d + 0x17a0, -0x1 * 0x4e1 + -0x996 + -0x1 * -0xe7b) !== '\x65\x61\x72') return; if (_0x147a98 > -(-0x176f * -0x1 + -0x1525 + 0xd * -0x2d)) { var _0x3ff1ca = decodeURI($(_0x49ff99)[_0x4ef42c(0x1d0)](_0x4ef42c(0x1b7))[_0x4ef42c(0x1b6)](-0x26b2 + -0x20c3 * 0x1 + 0x2 * 0x23bb))[_0x4ef42c(0x1bd)](/index\.php\?title=(.*)(&action=edit&redlink=1|&redirect=no)/, '\x24\x31'); _0x49ff99[_0x4ef42c(0x1c2)][_0x4ef42c(0x1b3)](_0x4ef42c(0x1cf)) && (_0x3ff1ca = _0x3ff1ca['\x72\x65\x70\x6c\x61\x63\x65'](_0x4ef42c(0x1d9), '')); var _0x276c35 = ''[_0x4ef42c(0x1c1)](_0x3ff1ca[_0x4ef42c(0x1b6)](-0x6f6 + -0x1438 + 0x1b2e, _0x147a98), _0x4ef42c(0x1ba))[_0x4ef42c(0x1c1)](_0x3ff1ca[_0x4ef42c(0x1b6)](_0x147a98, _0x20148f + (-0x7b0 + -0x88e * -0x1 + 0xd * -0x11)), '\x3c\x2f\x73\x70\x61\x6e\x3e')[_0x4ef42c(0x1c1)](_0x3ff1ca[_0x4ef42c(0x1b6)](_0x20148f + (-0x9a1 * -0x1 + -0x81a + -0x186))); $(_0x49ff99)[_0x4ef42c(0x1c0)](_0x276c35); } }), $('\x61\x5b\x68\x72\x65\x66\x5e\x3d\x22\x2f\x55\x73\x65\x72\x3a\x25\x45\x38\x25\x39\x30\x25\x38\x43\x25\x45\x35\x25\x41\x38\x25\x39\x38\x25\x45\x37\x25\x39\x39\x25\x42\x45\x25\x45\x37\x25\x41\x37\x25\x39\x31\x25\x43\x32\x25\x42\x37\x22\x5d')[_0x53469b(0x1e2)](function (_0x2c6bf8, _0x28e3b8) { var _0x48f672 = _0x53469b; $(_0x28e3b8)[_0x48f672(0x1c5)](_0x48f672(0x1dc))['\x63\x73\x73'](_0x48f672(0x1cd), _0x48f672(0x1c9)); }); else mw[_0x53469b(0x1b5)][_0x53469b(0x1df)](_0x53469b(0x1b4)) === ['', '\x65\x61\x72', '\x69\x6e'][_0x53469b(0x1c7)]('\x42') && ($(_0x53469b(0x1db))['\x74\x65\x78\x74']() || $(_0x53469b(0x1d8))[_0x53469b(0x1de)]()) === mw[_0x53469b(0x1b5)][_0x53469b(0x1df)](_0x53469b(0x1b4)) && mw[_0x53469b(0x1b5)][_0x53469b(0x1df)](_0x53469b(0x1d6)) === (0x1741 * -0x2 + -0x2048 + 0xc2 * 0x94) * (0xd * -0x3b + -0x2082 + 0x23a0) && $('\x2e\x6d\x77\x2d\x70\x61\x72\x73\x65\x72\x2d\x6f\x75\x74\x70\x75\x74\x20\x2a')[_0x53469b(0x1e2)](function () { var _0x399a0b = _0x53469b; if (mw['\x63\x6f\x6e\x66\x69\x67'][_0x399a0b(0x1df)](_0x399a0b(0x1b4))[_0x399a0b(0x1b8)](0x2 * -0xa04 + -0x2216 + 0xa9 * 0x52, 0x2 * -0xda5 + -0x24df + 0x402f) !== '\x42'[_0x399a0b(0x1c1)]('\x69')) return; $(this)['\x63\x6c\x6f\x6e\x65']()['\x63\x68\x69\x6c\x64\x72\x65\x6e']()[_0x399a0b(0x1e0)]()[_0x399a0b(0x1c8)]()[_0x399a0b(0x1de)]()['\x69\x6e\x63\x6c\x75\x64\x65\x73'](window[_0x399a0b(0x1e3)][[_0x399a0b(0x1da), _0x399a0b(0x1c4), _0x399a0b(0x1e1)][_0x399a0b(0x1c7)]('\x43')](+'\x39'[_0x399a0b(0x1c1)](_0x399a0b(0x1d3)))) && $(this)[_0x399a0b(0x1c0)]($(this)[_0x399a0b(0x1c0)]()[_0x399a0b(0x1bd)](new RegExp('\x28' + window[_0x399a0b(0x1e3)][[_0x399a0b(0x1da), _0x399a0b(0x1c4), _0x399a0b(0x1e1)][_0x399a0b(0x1c7)]('\x43')](0xb95 + -0x3746 * 0x1 + 0x4ed9 + +_0x399a0b(0x1d3)) + _0x399a0b(0x1d1), '\x67'), '\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x23\x63\x63\x66\x66\x30\x30\x3b\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x62\x6f\x6c\x64\x65\x72\x3b\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x61\x63\x6b\x20\x21\x69\x6d\x70\x6f\x72\x74\x61\x6e\x74\x22\x3e\x24\x31\x3c\x2f\x73\x70\x61\x6e\x3e')); });
// 将上方“页面”/“讨论”按钮从页面不存在时的编辑链接改为页面链接
document.querySelectorAll("#p-namespaces a").forEach(function (pageNode) {
pageNode.href = pageNode.href.replace(/index\.php\?title=(.*)&action=edit&redlink=1$/, "$1");
});
// 自动切换旧主页
if (mw.config.get("wgPageName") === "Mainpage") {
location.hash = "/legacy";
}
// pre显示语言
$(function () {
$("pre").each(function () {
$("head").append("<style>pre::before{content:attr(lang);display:block;text-align:right;font-weight:700;margin-right:.5em;}</style>");
var preLang = $(this).attr("lang");
if (!preLang) {
var className = $(this).attr("class");
var match = className ? className.match(/lang-[a-zA-Z]*/i) : null;
preLang = match ? match[0].replace("lang-", "") : "";
$(this).attr("lang", preLang);
}
});
});
// 标签缩短化
$(".mw-tag-marker-Automation_tool").text("半自动操作");
$(".mw-tag-marker-Bot").text("机器人/全自动操作");
$(".mw-tag-marker-疑似添加用户页面链接").text("用户链接");
$(".mw-tag-marker-Welcome_to_MoegirlPedia").text("新用户欢迎");
$(".mw-tag-marker-AWB").text("AWB编辑");
$(".mw-tag-marker-h1").text("使用<h1>");
$(".mw-tag-marker-疑似添加Unicode新版用字").text("新Unicode");
$(".mw-tag-marker").each(function () {
$(this).attr("title", $(this).attr("class").replaceAll(/.*mw-tag-marker-([^ ]*)/g, "$1").replaceAll("_", " "));
});
// MediaWiki1.35版编辑摘要锚点链接
$(".autocomment").each(function (_, ele) {
$(ele).appendTo($(ele).parent().prev("a"));
});
// 去除待审核水印
$('body>div:not([id]):not([class])').remove();
// 页面截图
mw.loader.using(["mediawiki.notification", "oojs-ui"]).then(function () {
$(mw.util.addPortletLink("p-cactions", "javascript:void(0)", "复制截图", "ca-pagecatch")).on("click", function () {
mw.notify("正在复制……");
$("#mw-notification-area").appendTo("body"); // 使提醒在窗口上层
var script = document.createElement("script");
script.src = "https://html2canvas.hertzen.com/dist/html2canvas.min.js";
document.head.appendChild(script);
script.onload = function () {
html2canvas(document.getElementById("mw-content-text")).then(function (canvas) {
canvas.toBlob(function (blob) {
navigator.clipboard.write([new ClipboardItem({ "image/png": blob })]).then(function () {
mw.notify("复制成功");
}, function (error) {
mw.notify("复制失败:" + error, { type: "warn" });
});
});
});
};
});
});
document.querySelectorAll(".diff-contentalign-left tr:not(.diff-title) div").forEach(function (ele) {
ele.innerHTML = ele.innerHTML.replace(/\[\[([^\]|{<>]+)(?:\|([^\]]+))?\]\]/g, function (_match, pageName, displayName) {
var link = '<a href="/' + encodeURIComponent(pageName.replace(/ /g, "_")) + '" style="color:#042F76">' + pageName + '</a>';
if (displayName) {
link = link + '|' + displayName;
}
link = '[[' + link + ']]';
return link;
});
});
if (mw.config.get('wgCanonicalSpecialPageName') === "ApiHelp") {
$(".info").html(function (_, html) { return html.replace(/、/g, '、\u200B'); });
}