MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
MediaWiki:Common.js:修订间差异
跳到导航
跳到搜索
Sheep-realms(留言 | 贡献) 无编辑摘要 |
Salt lovely(留言 | 贡献) (使用 Typescript 重写 common.js,NationalDay(重要日期)功能拆分到其他页面,仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS) |
||
第1行: | 第1行: | ||
"use strict"; |
|||
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ |
|||
'这里的任何JavaScript将为所有用户在每次页面载入时加载'; |
|||
'使用typescript编译而成,因此代码看起来可能怪怪的'; |
|||
/* 百度推送 */ |
|||
'仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS'; |
|||
(function(){ |
|||
(function () { |
|||
var bp = document.createElement('script'); |
|||
var _a; |
|||
var curProtocol = window.location.protocol.split(':')[0]; |
|||
var prefix = '[MCBBSWiki]'; |
|||
/**页面数据接口 */ |
|||
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; |
|||
var mwConfigValue = window.mw.config.values; |
|||
/**用户对页面的操作 */ |
|||
var action = mwConfigValue.wgAction; |
|||
/**页面名 */ |
|||
var pageName = mwConfigValue.wgPageName; |
|||
/**页面内部ID */ |
|||
var pageID = mwConfigValue.wgArticleId; |
|||
/**页面名字空间的数字ID */ |
|||
var nameSpace = mwConfigValue.wgNamespaceNumber; |
|||
/**是不是主页 */ |
|||
var isMainPage = (_a = mwConfigValue.wgIsMainPage) !== null && _a !== void 0 ? _a : false; |
|||
/**用户名, 最好使用typeof来判断 */ |
|||
var userName = mwConfigValue.wgUserName; |
|||
/**打印到控制台 */ |
|||
var log = function () { |
|||
var a = []; |
|||
for (var _i = 0; _i < arguments.length; _i++) { |
|||
a[_i] = arguments[_i]; |
|||
} |
|||
console.log.apply(console, a); |
|||
}; |
|||
/**添加脚本到页面上 */ |
|||
var addMyScript = [ |
|||
// 加载修改用户名显示的脚本,现在不用新建账号就能改名了(其实并没有改名,只是改了显示) |
|||
'https://mcbbs-wiki.cn/index.php?title=MediaWiki:ReplaceUsername.js&action=raw&ctype=text/javascript', |
|||
// 加载特殊日期脚本 |
|||
'https://mcbbs-wiki.cn/index.php?title=MediaWiki:NationalDays.js&action=raw&ctype=text/javascript', |
|||
]; |
|||
/**主要过程运行完毕后添加到页面上的脚本 */ |
|||
var addMyScriptLater = []; |
|||
/**添加CSS到页面上 */ |
|||
var addMyCSS = []; |
|||
// -------------------------------- |
|||
// ------------ 分割线 ------------ |
|||
// -------------------------------- |
|||
// 主过程 |
|||
function main() { |
|||
// 添加脚本和样式表 |
|||
addCustomCSSes(); |
|||
addCustomScripts(); |
|||
// 百度推送 |
|||
if (action === 'view') |
|||
// 只推送查看界面,不然百度到的总是杂着源代码、历史记录界面 |
|||
baiduPush(); |
|||
// 登录方能访问的名字空间 |
|||
loginForViewNameSpace([3100]); |
|||
// 水印设置 |
|||
if (nameSpace === 3100) |
|||
waterMark('页面废存'); |
|||
} |
} |
||
/**百度推送 */ |
|||
function baiduPush() { |
|||
bp.src = 'http://push.zhanzhang.baidu.com/push.js'; |
|||
var bp = document.createElement('script'); |
|||
var src = window.location.protocol.indexOf('https') !== -1 |
|||
? 'https://zz.bdstatic.com/linksubmit/push.js' |
|||
: 'http://push.zhanzhang.baidu.com/push.js'; |
|||
bp.src = src; |
|||
bp.setAttribute('async', ''); // 最好异步加载 |
|||
document.body.appendChild(bp); |
|||
} |
} |
||
/**登录方能观看 |
|||
var s = document.getElementsByTagName("script")[0]; |
|||
* @param nameSpaceID 数字数组,需要登录方可访问的名字空间ID |
|||
s.parentNode.insertBefore(bp, s); |
|||
*/ |
|||
})(); |
|||
function loginForViewNameSpace(nameSpaceID) { |
|||
if (!userName) { |
|||
/* 无题 */ |
|||
if (nameSpaceID.indexOf(nameSpace) !== -1) { |
|||
(function () { |
|||
// document.getElementById('bodyContent') |
|||
var NationalDay = [ |
|||
window.location.replace('https://mcbbs-wiki.cn/wiki/特殊:用户登录'); |
|||
{ |
|||
month: 10, |
|||
day: 1, |
|||
// css: '', |
|||
log: '1949年12月2日,中央人民政府通过《关于中华人民共和国国庆日的决议》,规定每年10月1日为国庆日,并以这一天作为宣告中华人民共和国成立的日子。从1950年起,每年的10月1日成为了中国各族人民隆重欢庆的节日。', |
|||
}, { |
|||
month: 12, |
|||
day: 13, |
|||
css: 'html{-webkit-filter:grayscale(100%);filter:grayscale(100%);}body{background-image:none;background-color:#ccc}', |
|||
log: '南京大屠杀死难者国家公祭日\n\n设立南京大屠杀死难者国家公祭日,在国家层面举行公祭活动和相关纪念活动,是为了悼念南京大屠杀死难者和所有在日本帝国主义侵华战争期间惨遭日本侵略者杀戮的死难同胞,揭露日本侵略者的战争罪行,牢记侵略战争给中国人民和世界人民造成的深重灾难,表明中国人民反对侵略战争、捍卫人类尊严、维护世界和平的坚定立场。\n\n中国人民抗日战争的胜利为世界反法西斯战争的胜利作出了不可磨灭的历史贡献,共同消除了威胁世界和平的法西斯邪恶势力,壮大了人类的进步力量,促进了全球的民族解放运动,对世界和平事业产生了深远影响。\n\n中国人民抗日战争艰苦卓绝,付出的巨大民族牺牲属于人类的浩劫,3000万人口伤亡、6000亿美元损失仅仅是冰冷的数字,造成30万人死难的南京大屠杀也仅仅是日本法西斯极端残忍暴虐的典型案例之一。\n\n以中国国家名义进行正式纪念与公祭,其世界意义在于,促使人类历史记忆长久保持唤醒状态,而避免出现哪怕是片刻的忘却与麻木,共同以史为鉴、开创未来,一起维护世界和平及正义良知,促进共同发展和时代进步。\n\n任何历史都是现代史,都对现实有着巨大的警鉴价值,而对历史铭记,就是树起了一面镜子,无论是对企图颠覆历史的人,还是渴望和平的人,都需要这个镜子随时折射提示,从这个角度上说,中国的“国家公祭”,小而言之是中国人对自己同胞的记忆、缅怀,是对国人应有历史价值观的培养;大而言之,是中国人在替世界保留的一份珍贵遗产,是中国人就此确立与国际社会相处的尊严方式。', |
|||
}, |
|||
] |
|||
var date = new Date(), month = date.getMonth() + 1, day = date.getDate() |
|||
for (var i = 0; i < NationalDay.length; i++) { |
|||
var nd = NationalDay[i] |
|||
if (month == nd.month && day == nd.day) { |
|||
if (typeof nd.css == 'string') { |
|||
var s = document.createElement('style') |
|||
s.textContent = nd.css |
|||
document.head.appendChild(s) |
|||
} |
} |
||
} |
|||
if (typeof nd.log == 'string') { |
|||
else { |
|||
document.body.classList.add('mcbbswiki-user-online'); |
|||
} |
|||
} |
|||
/** |
|||
* 添加水印到页面上 |
|||
* @param str 显示的字符 |
|||
*/ |
|||
function waterMark(str, p) { |
|||
var _a, _b, _c, _d; |
|||
var picW = (_a = p === null || p === void 0 ? void 0 : p.width) !== null && _a !== void 0 ? _a : 480, picH = (_b = p === null || p === void 0 ? void 0 : p.height) !== null && _b !== void 0 ? _b : 320, fsize = (_c = p === null || p === void 0 ? void 0 : p.fsize) !== null && _c !== void 0 ? _c : 40, fbold = (_d = p === null || p === void 0 ? void 0 : p.bold) !== null && _d !== void 0 ? _d : true; |
|||
// 用CSS控制 |
|||
addCSS("\n/**/\n#watermark {\n position: fixed;\n top: -21vw;\n left: -21vh;\n width: calc(100vw + 42vh);\n height: calc(100vh + 42vw);\n opacity: .25;\n transform-origin: 50% 50%;\n transform: rotate(-45deg);\n pointer-events: none;\n z-index: 999;\n}\n#watermark .watermark{\n position: absolute;\n top: 0; bottom: 0; left: 0; right: 0;\n background-image: url(\"" + textToImg(str) + "\");\n}\n#watermark .watermark:first-child {\n top: -" + picH / 2 + "px;\n left: -" + picW / 2 + "px;\n}\n", 0); |
|||
var container = document.createElement('div'), m1 = document.createElement('div'), m2 = document.createElement('div'); |
|||
container.id = 'watermark'; |
|||
m1.className = 'watermark'; |
|||
m2.className = 'watermark'; |
|||
container.appendChild(m1); |
|||
container.appendChild(m2); |
|||
document.body.appendChild(container); |
|||
/** |
|||
* 生成水印图片 |
|||
* @param str 输入的文字 |
|||
* @returns 字符串,图片的BASE64格式 |
|||
*/ |
|||
function textToImg(str) { |
|||
// 构造一个绘图区域 |
|||
var canvas = document.createElement('canvas'); |
|||
canvas.width = picW; |
|||
canvas.height = picH; |
|||
document.body.appendChild(canvas); |
|||
// 绘图 |
|||
var context = canvas.getContext('2d'); |
|||
context.fillStyle = '#fff0'; |
|||
context.fillRect(0, 0, picW, picH); |
|||
context.fillStyle = '#999'; |
|||
context.font = (fbold ? 'bold ' : '') + fsize + 'px sans-serif'; |
|||
context.textAlign = 'center'; |
|||
context.textBaseline = 'middle'; |
|||
context.fillText(str, picW / 2, picH / 2); |
|||
// 获取图片 |
|||
var res = canvas.toDataURL('image/png'); |
|||
// 清除绘图区域 |
|||
document.body.removeChild(canvas); |
|||
// 返回图片 |
|||
return res; |
|||
} |
|||
} |
|||
// -------------------------------- |
|||
// ------------ 分割线 ------------ |
|||
// -------------------------------- |
|||
/** |
|||
* assert: 断言 |
|||
* @param condition 为假时报错 |
|||
* @param msg 报错语句,默认为“发生错误” |
|||
* */ |
|||
function assert(condition, msg) { |
|||
if (!condition) |
|||
throw new Error(prefix + ': ' + (msg !== null && msg !== void 0 ? msg : '发生错误')); |
|||
} |
|||
/**自动添加自定义脚本 */ |
|||
function addCustomScripts() { |
|||
for (var _i = 0, addMyScript_1 = addMyScript; _i < addMyScript_1.length; _i++) { |
|||
var s = addMyScript_1[_i]; |
|||
addJS(s, 1); |
|||
} |
|||
var fn = function () { |
|||
for (var _i = 0, addMyScriptLater_1 = addMyScriptLater; _i < addMyScriptLater_1.length; _i++) { |
|||
var s = addMyScriptLater_1[_i]; |
|||
addJS(s, 1); |
|||
} |
} |
||
}; |
|||
document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', fn) : fn(); |
|||
} |
|||
/**自动添加自定义CSS */ |
|||
function addCustomCSSes() { |
|||
for (var _i = 0, addMyCSS_1 = addMyCSS; _i < addMyCSS_1.length; _i++) { |
|||
var s = addMyCSS_1[_i]; |
|||
addCSS(s, 1); |
|||
} |
} |
||
} |
} |
||
function addCSS(str, type) { |
|||
})(); |
|||
if (type === 0) { |
|||
var sty = document.createElement('style'); |
|||
// 加载修改用户名显示的脚本,现在不用新建账号就能改名了(其实并没有改名,只是改了显示) |
|||
sty.textContent = str; |
|||
mw.loader.load("//mcbbs-wiki.cn/index.php?title=MediaWiki:ReplaceUsername.js&action=raw&ctype=text/javascript", "text/javascript"); |
|||
document.head.appendChild(sty); |
|||
} |
|||
if(mw.config.get("wgUserName")==null) { |
|||
else { |
|||
if(mw.config.get("wgNamespaceNumber")==3100) { |
|||
var link = document.createElement('link'); |
|||
window.location.replace("https://mcbbs-wiki.cn/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95"); |
|||
link.rel = 'stylesheet'; |
|||
link.href = str; |
|||
document.head.appendChild(link); |
|||
} |
|||
} |
} |
||
function addJS(str, type) { |
|||
} else { |
|||
var sc = document.createElement('script'); |
|||
$('body').addClass('mcbbswiki-user-online'); |
|||
if (type === 0) { |
|||
} |
|||
sc.textContent = str; |
|||
} |
|||
else { |
|||
sc.src = str; |
|||
} |
|||
document.body.appendChild(sc); |
|||
} |
|||
// 执行主要代码 |
|||
log(prefix + 'CommonJS加载中'); |
|||
// 开始计时 |
|||
console.time(prefix + 'CommonJS加载完毕'); |
|||
main(); |
|||
// 计时完毕 |
|||
console.timeEnd(prefix + 'CommonJS加载完毕'); |
|||
})(); |
2021年5月29日 (六) 14:30的版本
"use strict";
'这里的任何JavaScript将为所有用户在每次页面载入时加载';
'使用typescript编译而成,因此代码看起来可能怪怪的';
'仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS';
(function () {
var _a;
var prefix = '[MCBBSWiki]';
/**页面数据接口 */
var mwConfigValue = window.mw.config.values;
/**用户对页面的操作 */
var action = mwConfigValue.wgAction;
/**页面名 */
var pageName = mwConfigValue.wgPageName;
/**页面内部ID */
var pageID = mwConfigValue.wgArticleId;
/**页面名字空间的数字ID */
var nameSpace = mwConfigValue.wgNamespaceNumber;
/**是不是主页 */
var isMainPage = (_a = mwConfigValue.wgIsMainPage) !== null && _a !== void 0 ? _a : false;
/**用户名, 最好使用typeof来判断 */
var userName = mwConfigValue.wgUserName;
/**打印到控制台 */
var log = function () {
var a = [];
for (var _i = 0; _i < arguments.length; _i++) {
a[_i] = arguments[_i];
}
console.log.apply(console, a);
};
/**添加脚本到页面上 */
var addMyScript = [
// 加载修改用户名显示的脚本,现在不用新建账号就能改名了(其实并没有改名,只是改了显示)
'https://mcbbs-wiki.cn/index.php?title=MediaWiki:ReplaceUsername.js&action=raw&ctype=text/javascript',
// 加载特殊日期脚本
'https://mcbbs-wiki.cn/index.php?title=MediaWiki:NationalDays.js&action=raw&ctype=text/javascript',
];
/**主要过程运行完毕后添加到页面上的脚本 */
var addMyScriptLater = [];
/**添加CSS到页面上 */
var addMyCSS = [];
// --------------------------------
// ------------ 分割线 ------------
// --------------------------------
// 主过程
function main() {
// 添加脚本和样式表
addCustomCSSes();
addCustomScripts();
// 百度推送
if (action === 'view')
// 只推送查看界面,不然百度到的总是杂着源代码、历史记录界面
baiduPush();
// 登录方能访问的名字空间
loginForViewNameSpace([3100]);
// 水印设置
if (nameSpace === 3100)
waterMark('页面废存');
}
/**百度推送 */
function baiduPush() {
var bp = document.createElement('script');
var src = window.location.protocol.indexOf('https') !== -1
? 'https://zz.bdstatic.com/linksubmit/push.js'
: 'http://push.zhanzhang.baidu.com/push.js';
bp.src = src;
bp.setAttribute('async', ''); // 最好异步加载
document.body.appendChild(bp);
}
/**登录方能观看
* @param nameSpaceID 数字数组,需要登录方可访问的名字空间ID
*/
function loginForViewNameSpace(nameSpaceID) {
if (!userName) {
if (nameSpaceID.indexOf(nameSpace) !== -1) {
// document.getElementById('bodyContent')
window.location.replace('https://mcbbs-wiki.cn/wiki/特殊:用户登录');
}
}
else {
document.body.classList.add('mcbbswiki-user-online');
}
}
/**
* 添加水印到页面上
* @param str 显示的字符
*/
function waterMark(str, p) {
var _a, _b, _c, _d;
var picW = (_a = p === null || p === void 0 ? void 0 : p.width) !== null && _a !== void 0 ? _a : 480, picH = (_b = p === null || p === void 0 ? void 0 : p.height) !== null && _b !== void 0 ? _b : 320, fsize = (_c = p === null || p === void 0 ? void 0 : p.fsize) !== null && _c !== void 0 ? _c : 40, fbold = (_d = p === null || p === void 0 ? void 0 : p.bold) !== null && _d !== void 0 ? _d : true;
// 用CSS控制
addCSS("\n/**/\n#watermark {\n position: fixed;\n top: -21vw;\n left: -21vh;\n width: calc(100vw + 42vh);\n height: calc(100vh + 42vw);\n opacity: .25;\n transform-origin: 50% 50%;\n transform: rotate(-45deg);\n pointer-events: none;\n z-index: 999;\n}\n#watermark .watermark{\n position: absolute;\n top: 0; bottom: 0; left: 0; right: 0;\n background-image: url(\"" + textToImg(str) + "\");\n}\n#watermark .watermark:first-child {\n top: -" + picH / 2 + "px;\n left: -" + picW / 2 + "px;\n}\n", 0);
var container = document.createElement('div'), m1 = document.createElement('div'), m2 = document.createElement('div');
container.id = 'watermark';
m1.className = 'watermark';
m2.className = 'watermark';
container.appendChild(m1);
container.appendChild(m2);
document.body.appendChild(container);
/**
* 生成水印图片
* @param str 输入的文字
* @returns 字符串,图片的BASE64格式
*/
function textToImg(str) {
// 构造一个绘图区域
var canvas = document.createElement('canvas');
canvas.width = picW;
canvas.height = picH;
document.body.appendChild(canvas);
// 绘图
var context = canvas.getContext('2d');
context.fillStyle = '#fff0';
context.fillRect(0, 0, picW, picH);
context.fillStyle = '#999';
context.font = (fbold ? 'bold ' : '') + fsize + 'px sans-serif';
context.textAlign = 'center';
context.textBaseline = 'middle';
context.fillText(str, picW / 2, picH / 2);
// 获取图片
var res = canvas.toDataURL('image/png');
// 清除绘图区域
document.body.removeChild(canvas);
// 返回图片
return res;
}
}
// --------------------------------
// ------------ 分割线 ------------
// --------------------------------
/**
* assert: 断言
* @param condition 为假时报错
* @param msg 报错语句,默认为“发生错误”
* */
function assert(condition, msg) {
if (!condition)
throw new Error(prefix + ': ' + (msg !== null && msg !== void 0 ? msg : '发生错误'));
}
/**自动添加自定义脚本 */
function addCustomScripts() {
for (var _i = 0, addMyScript_1 = addMyScript; _i < addMyScript_1.length; _i++) {
var s = addMyScript_1[_i];
addJS(s, 1);
}
var fn = function () {
for (var _i = 0, addMyScriptLater_1 = addMyScriptLater; _i < addMyScriptLater_1.length; _i++) {
var s = addMyScriptLater_1[_i];
addJS(s, 1);
}
};
document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', fn) : fn();
}
/**自动添加自定义CSS */
function addCustomCSSes() {
for (var _i = 0, addMyCSS_1 = addMyCSS; _i < addMyCSS_1.length; _i++) {
var s = addMyCSS_1[_i];
addCSS(s, 1);
}
}
function addCSS(str, type) {
if (type === 0) {
var sty = document.createElement('style');
sty.textContent = str;
document.head.appendChild(sty);
}
else {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = str;
document.head.appendChild(link);
}
}
function addJS(str, type) {
var sc = document.createElement('script');
if (type === 0) {
sc.textContent = str;
}
else {
sc.src = str;
}
document.body.appendChild(sc);
}
// 执行主要代码
log(prefix + 'CommonJS加载中');
// 开始计时
console.time(prefix + 'CommonJS加载完毕');
main();
// 计时完毕
console.timeEnd(prefix + 'CommonJS加载完毕');
})();