MediaWiki:Common.js:修订间差异
MediaWiki界面页面
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第19行: | 第19行: | ||
} | } | ||
}); | }); | ||
}); | |||
$(function () { | |||
// 只在查看页面时执行(可按需去掉这个判断) | |||
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; | |||
// 分批查询,防止 URL 过长 | |||
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 golden = {}; | |||
if (data.query && data.query.users) { | |||
data.query.users.forEach(function (u) { | |||
if (u.editcount >= 1000) { | |||
golden[u.name] = true; | |||
} | |||
}); | |||
} | |||
// 给符合条件的链接加上金色类 | |||
$userlinks.each(function () { | |||
var $this = $(this); | |||
if (golden[$this.text().trim()]) { | |||
$this.addClass('golden-user'); | |||
} | |||
}); | |||
}); | |||
}; | |||
// 按顺序执行每一批查询 | |||
var promise = $.Deferred().resolve(); | |||
batches.forEach(function (batch) { | |||
promise = promise.then(function () { | |||
return processBatch(batch); | |||
}); | |||
}); | |||
}); | }); | ||
2026年5月31日 (日) 05:54的版本
/* 这里的任何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 () {
// 只在查看页面时执行(可按需去掉这个判断)
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;
// 分批查询,防止 URL 过长
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 golden = {};
if (data.query && data.query.users) {
data.query.users.forEach(function (u) {
if (u.editcount >= 1000) {
golden[u.name] = true;
}
});
}
// 给符合条件的链接加上金色类
$userlinks.each(function () {
var $this = $(this);
if (golden[$this.text().trim()]) {
$this.addClass('golden-user');
}
});
});
};
// 按顺序执行每一批查询
var promise = $.Deferred().resolve();
batches.forEach(function (batch) {
promise = promise.then(function () {
return processBatch(batch);
});
});
});