3,389
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
Sheep-realms(留言 | 贡献) 无编辑摘要 |
Salt lovely(留言 | 贡献) (使用 Typescript 重写 common.js,NationalDay(重要日期)功能拆分到其他页面,仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS) |
||
| 第1行: | 第1行: | ||
/* | "use strict"; | ||
'这里的任何JavaScript将为所有用户在每次页面载入时加载'; | |||
/* | '使用typescript编译而成,因此代码看起来可能怪怪的'; | ||
(function(){ | '仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS'; | ||
(function () { | |||
var | var _a; | ||
if ( | 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('页面废存'); | |||
} | } | ||
/**百度推送 */ | |||
bp.src = 'http://push.zhanzhang.baidu.com/push.js'; | 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/特殊:用户登录'); | |||
if ( | |||
if ( | |||
} | } | ||
if ( | } | ||
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加载完毕'); | |||
})(); | })(); | ||