MediaWiki:Common.js:修订间差异
MediaWiki界面页面
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第21行: | 第21行: | ||
}); | }); | ||
$(function () { | $(function () { | ||
// | // 动态注入彩虹用户样式(避免 Common.css 校验警告) | ||
var rainbowStyle = document.createElement('style'); | |||
rainbowStyle.textContent = | |||
'.rainbow-user {' + | |||
'font-weight: bold;' + | |||
'background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);' + | |||
'-webkit-background-clip: text;' + | |||
'-webkit-text-fill-color: transparent;' + | |||
'background-clip: text;' + | |||
'color: #FFD700;' + /* 降级:不支持渐变时显示金色 */ | |||
'}' + | |||
'.rainbow-user::after {' + | |||
'content: "⭐";' + | |||
'margin-left: 2px;' + | |||
'font-weight: normal;' + | |||
'-webkit-text-fill-color: initial;' + | |||
'color: #FFD700;' + | |||
'}'; | |||
document.head.appendChild(rainbowStyle); | |||
// 只在查看页面时执行 | |||
if (mw.config.get('wgAction') !== 'view') return; | if (mw.config.get('wgAction') !== 'view') return; | ||
var $userlinks = $('a.mw-userlink'); | var $userlinks = $('a.mw-userlink'); | ||
if ($userlinks.length === 0) return; | if ($userlinks.length === 0) return; | ||
| 第35行: | 第55行: | ||
} | } | ||
}); | }); | ||
if (users.length === 0) return; | if (users.length === 0) return; | ||
// | // 分批查询 API | ||
var batchSize = 50; | var batchSize = 50; | ||
var batches = []; | var batches = []; | ||
| 第53行: | 第72行: | ||
usprop: 'editcount' | usprop: 'editcount' | ||
}).then(function (data) { | }).then(function (data) { | ||
var | var classMap = {}; | ||
if (data.query && data.query.users) { | if (data.query && data.query.users) { | ||
data.query.users.forEach(function (u) { | data.query.users.forEach(function (u) { | ||
if (u. | var ec = u.editcount || 0; | ||
// 从高到低判断,避免覆盖 | |||
if (ec >= 5000) { | |||
classMap[u.name] = 'rainbow-user'; | |||
} else if (ec >= 2000) { | |||
classMap[u.name] = 'gold-user'; | |||
} else if (ec >= 1000) { | |||
classMap[u.name] = 'platinum-user'; | |||
} else if (ec >= 500) { | |||
classMap[u.name] = 'silver-user'; | |||
} | } | ||
}); | }); | ||
} | } | ||
// | // 应用类名 | ||
$userlinks.each(function () { | $userlinks.each(function () { | ||
var $this = $(this); | var $this = $(this); | ||
var userName = $this.text().trim(); | |||
$this. | var cls = classMap[userName]; | ||
if (cls) { | |||
// 移除旧的颜色类(防止叠加) | |||
$this.removeClass('silver-user platinum-user gold-user rainbow-user'); | |||
$this.addClass(cls); | |||
} | } | ||
}); | }); | ||
| 第71行: | 第102行: | ||
}; | }; | ||
// | // 按顺序执行所有批次 | ||
var promise = $.Deferred().resolve(); | var promise = $.Deferred().resolve(); | ||
batches.forEach(function (batch) { | batches.forEach(function (batch) { | ||
2026年5月31日 (日) 06:13的版本
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
// 自动加载 MediaWiki:Footer 页面内容,并插入到每个页面底部
$(document).ready(function() {
const namespace = mw.config.get('wgNamespaceNumber');
const action = mw.config.get('wgAction');
if (namespace !== 0 || action !== 'view') {
return;
}
fetch("/api.php?action=parse&page=MediaWiki:Footer&format=json")
.then(res => res.json())
.then(data => {
if (data.parse && data.parse.text) {
const html = data.parse.text['*'];
$('#mw-content-text').append('<div class="global-footer">' + html + '</div>');
}
});
});
$(function () {
// 动态注入彩虹用户样式(避免 Common.css 校验警告)
var rainbowStyle = document.createElement('style');
rainbowStyle.textContent =
'.rainbow-user {' +
'font-weight: bold;' +
'background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);' +
'-webkit-background-clip: text;' +
'-webkit-text-fill-color: transparent;' +
'background-clip: text;' +
'color: #FFD700;' + /* 降级:不支持渐变时显示金色 */
'}' +
'.rainbow-user::after {' +
'content: "⭐";' +
'margin-left: 2px;' +
'font-weight: normal;' +
'-webkit-text-fill-color: initial;' +
'color: #FFD700;' +
'}';
document.head.appendChild(rainbowStyle);
// 只在查看页面时执行
if (mw.config.get('wgAction') !== 'view') return;
var $userlinks = $('a.mw-userlink');
if ($userlinks.length === 0) return;
// 收集去重用户名
var users = [];
$userlinks.each(function () {
var name = $(this).text().trim();
if (name && users.indexOf(name) === -1) {
users.push(name);
}
});
if (users.length === 0) return;
// 分批查询 API
var batchSize = 50;
var batches = [];
for (var i = 0; i < users.length; i += batchSize) {
batches.push(users.slice(i, i + batchSize));
}
var processBatch = function (batch) {
var api = new mw.Api();
return api.get({
action: 'query',
list: 'users',
ususers: batch.join('|'),
usprop: 'editcount'
}).then(function (data) {
var classMap = {};
if (data.query && data.query.users) {
data.query.users.forEach(function (u) {
var ec = u.editcount || 0;
// 从高到低判断,避免覆盖
if (ec >= 5000) {
classMap[u.name] = 'rainbow-user';
} else if (ec >= 2000) {
classMap[u.name] = 'gold-user';
} else if (ec >= 1000) {
classMap[u.name] = 'platinum-user';
} else if (ec >= 500) {
classMap[u.name] = 'silver-user';
}
});
}
// 应用类名
$userlinks.each(function () {
var $this = $(this);
var userName = $this.text().trim();
var cls = classMap[userName];
if (cls) {
// 移除旧的颜色类(防止叠加)
$this.removeClass('silver-user platinum-user gold-user rainbow-user');
$this.addClass(cls);
}
});
});
};
// 按顺序执行所有批次
var promise = $.Deferred().resolve();
batches.forEach(function (batch) {
promise = promise.then(function () {
return processBatch(batch);
});
});
});