MediaWiki:Common.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
//* 添加悬停计时器到行 */
(function() {
var selectors = 'tr, p';
document.querySelectorAll(selectors).forEach(function(element) {
var hoverTimer;
element.addEventListener('mouseenter', function() {
hoverTimer = setTimeout(function() {
element.classList.add('line');
}, 100);
});
element.addEventListener('mouseleave', function() {
clearTimeout(hoverTimer);
element.classList.remove('line');
});
});
})();
$(function() {
// 仅在内容页面运行
if (mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgAction') === 'view') {
var pageTitle = mw.config.get('wgPageName');
var apiUrl = mw.util.wikiScript('api');
var maxDisplayUsers = 3; // 直接显示的最大用户数
var creditsLink = mw.util.getUrl(pageTitle, { action: 'credits' });
// 获取修订历史
$.getJSON(apiUrl, {
format: 'json',
action: 'query',
prop: 'revisions',
rvprop: 'timestamp|user',
rvlimit: 50,
titles: pageTitle,
rvdir: 'newer' // 从旧到新排序
}, function(data) {
var revisions = data.query.pages[0].revisions;
if (!revisions) return;
// 处理修订数据
var editors = [];
revisions.forEach(function(rev) {
if (rev.user && !editors.includes(rev.user)) {
editors.unshift(rev.user); // 倒序插入保持最新在前
}
});
if (editors.length === 0) return;
// 提取最后编辑信息
var lastRev = revisions[revisions.length - 1];
var lastUser = lastRev.user;
var lastDate = new Date(lastRev.timestamp);
var formattedDate = lastDate.toLocaleDateString('en-GB', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
var formattedTime = lastDate.toLocaleTimeString('en-GB', {
hour: '2-digit',
minute: '2-digit'
});
// 构建用户列表
var displayedUsers = editors.slice(0, maxDisplayUsers);
var otherUsers = editors.slice(maxDisplayUsers);
var userList = [];
if (displayedUsers.length > 1) {
var lastUser = displayedUsers.pop();
userList.push(
displayedUsers.join(', '),
' and ' + lastUser
);
} else {
userList.push(displayedUsers[0]);
}
// 构建完整文本
var creditText = document.createElement('div');
creditText.className = 'page-credits';
creditText.innerHTML = 'This page was last edited ' +
formattedTime + ', ' + formattedDate +
' by ' + mw.config.get('wgSiteName') + ' user ' + lastUser +
'. Based on work by ';
if (otherUsers.length > 0) {
var creditLink = document.createElement('a');
creditLink.href = creditsLink;
creditLink.textContent = 'others';
var usersSpan = document.createElement('span');
usersSpan.innerHTML = userList.join('') +
(otherUsers.length > 0 ? ', ' : '') +
creditLink.outerHTML;
creditText.appendChild(usersSpan);
} else {
creditText.innerHTML += userList.join('');
}
// 插入到页面底部
var footer = document.getElementById('footer-info');
if (footer) {
footer.appendChild(creditText);
}
});
}
});