“MediaWiki:Common.js”的版本间差异
跳转到导航
跳转到搜索
小 (导入1个版本) |
小 |
||
| (未显示同一用户的11个中间版本) | |||
| 第1行: | 第1行: | ||
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | ||
| − | + | // 显示最近更新的页面列表(带时间) | |
| − | // | + | setTimeout(function() { |
| − | function | + | //console.log('开始加载最近更新页面列表'); |
| − | // | + | |
| − | + | var sidebar = document.getElementById('mw-panel'); | |
| − | var | + | if (!sidebar) { |
| − | + | console.log('未找到侧边栏'); | |
| − | if ( | + | return; |
| − | |||
| − | |||
| − | |||
} | } | ||
| − | } | + | |
| − | if (! | + | var items = sidebar.getElementsByTagName('li'); |
| − | + | var targetItem = null; | |
| − | + | for (var i = 0; i < items.length; i++) { | |
| − | } | + | if (items[i].textContent.indexOf('最近更新') !== -1) { |
| − | + | targetItem = items[i]; | |
| − | + | break; | |
| − | + | } | |
| − | var apiUrl = mw.util.wikiScript('api') + '?' + | + | } |
| − | + | ||
| − | // | + | if (!targetItem) { |
| − | + | console.log('未找到目标容器'); | |
| − | + | return; | |
| − | + | } | |
| − | + | ||
| − | + | targetItem.textContent = ''; | |
| − | + | targetItem.innerHTML = '最近更新:<br>加载中...'; | |
| − | + | ||
| − | + | // API请求添加timestamp参数,获取更新时间 | |
| − | + | var apiUrl = mw.util.wikiScript('api') + '?'; | |
| − | + | apiUrl += 'action=query'; | |
| − | + | apiUrl += '&list=recentchanges'; | |
| − | + | apiUrl += '&rcprop=title|timestamp'; // 同时获取标题和时间戳 | |
| − | + | apiUrl += '&rclimit=10'; | |
| − | + | apiUrl += '&rcdaylimit=30'; | |
| − | + | apiUrl += '&format=json'; | |
| − | + | ||
| − | + | fetch(apiUrl) | |
| − | + | .then(function(response) { | |
| − | + | if (!response.ok) throw new Error('API请求失败:' + response.status); | |
| − | + | return response.json(); | |
| − | + | }) | |
| − | + | .then(function(data) { | |
| − | + | targetItem.innerHTML = '最近更新:<br>'; | |
| − | + | ||
| − | + | if (!data.query || !data.query.recentchanges || data.query.recentchanges.length === 0) { | |
| − | + | targetItem.innerHTML += '暂无更新'; | |
| − | + | return; | |
| − | + | } | |
| − | + | ||
| + | var seenTitles = new Set(); | ||
| + | var uniqueUpdates = []; | ||
| + | for (var i = 0; i < data.query.recentchanges.length; i++) { | ||
| + | var page = data.query.recentchanges[i]; | ||
| + | var title = page.title; | ||
| + | if (!seenTitles.has(title)) { | ||
| + | seenTitles.add(title); | ||
| + | uniqueUpdates.push(page); // 包含title和timestamp | ||
| + | if (uniqueUpdates.length >= 6) break; | ||
} | } | ||
| − | |||
| − | |||
| − | |||
} | } | ||
| − | + | ||
| − | }; | + | var list = document.createElement('ul'); |
| − | + | list.style.listStyle = 'none'; | |
| − | + | list.style.paddingLeft = '10px'; | |
| − | + | list.style.margin = '5px 0'; | |
| − | // | + | |
| − | + | uniqueUpdates.forEach(function(page) { | |
| − | + | // 处理时间戳:转换为本地时间(年-月-日 时:分) | |
| − | } | + | var date = new Date(page.timestamp); |
| − | + | var timeStr = date.toLocaleString('zh-CN', { | |
| − | } | + | month: '2-digit', // 月份(2位) |
| + | day: '2-digit', // 日期(2位) | ||
| + | hour: '2-digit', // 小时(2位) | ||
| + | minute: '2-digit', // 分钟(2位) | ||
| + | second: '2-digit', // 新增:显示秒(2位) | ||
| + | hour12: false // 强制24小时制(避免上午/下午) | ||
| + | }).replace(',', ''); // 移除可能的逗号分隔符 | ||
| + | |||
| + | var listItem = document.createElement('li'); | ||
| + | listItem.style.margin = '3px 0'; // 每条间距 | ||
| + | |||
| + | var link = document.createElement('a'); | ||
| + | link.href = mw.util.getUrl(page.title); | ||
| + | link.textContent = page.title; | ||
| + | link.style.color = '#0645ad'; | ||
| + | |||
| + | // 时间显示(灰色小字) | ||
| + | var timeSpan = document.createElement('span'); | ||
| + | timeSpan.textContent = ' (' + timeStr + ')'; | ||
| + | timeSpan.style.color = '#666'; // 灰色 | ||
| + | timeSpan.style.fontSize = '0.8em'; // 小字 | ||
| + | timeSpan.style.marginLeft = '5px'; | ||
| + | |||
| + | listItem.appendChild(link); | ||
| + | listItem.appendChild(timeSpan); | ||
| + | list.appendChild(listItem); | ||
| + | }); | ||
| + | |||
| + | targetItem.appendChild(list); | ||
| + | }) | ||
| + | .catch(function(error) { | ||
| + | console.error('加载失败:', error); | ||
| + | targetItem.innerHTML = '最近更新:<br>加载失败'; | ||
| + | }); | ||
| + | |||
| + | }, 1000); | ||
2025年10月9日 (四) 03:08:54的最新版本
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
// 显示最近更新的页面列表(带时间)
setTimeout(function() {
//console.log('开始加载最近更新页面列表');
var sidebar = document.getElementById('mw-panel');
if (!sidebar) {
console.log('未找到侧边栏');
return;
}
var items = sidebar.getElementsByTagName('li');
var targetItem = null;
for (var i = 0; i < items.length; i++) {
if (items[i].textContent.indexOf('最近更新') !== -1) {
targetItem = items[i];
break;
}
}
if (!targetItem) {
console.log('未找到目标容器');
return;
}
targetItem.textContent = '';
targetItem.innerHTML = '最近更新:<br>加载中...';
// API请求添加timestamp参数,获取更新时间
var apiUrl = mw.util.wikiScript('api') + '?';
apiUrl += 'action=query';
apiUrl += '&list=recentchanges';
apiUrl += '&rcprop=title|timestamp'; // 同时获取标题和时间戳
apiUrl += '&rclimit=10';
apiUrl += '&rcdaylimit=30';
apiUrl += '&format=json';
fetch(apiUrl)
.then(function(response) {
if (!response.ok) throw new Error('API请求失败:' + response.status);
return response.json();
})
.then(function(data) {
targetItem.innerHTML = '最近更新:<br>';
if (!data.query || !data.query.recentchanges || data.query.recentchanges.length === 0) {
targetItem.innerHTML += '暂无更新';
return;
}
var seenTitles = new Set();
var uniqueUpdates = [];
for (var i = 0; i < data.query.recentchanges.length; i++) {
var page = data.query.recentchanges[i];
var title = page.title;
if (!seenTitles.has(title)) {
seenTitles.add(title);
uniqueUpdates.push(page); // 包含title和timestamp
if (uniqueUpdates.length >= 6) break;
}
}
var list = document.createElement('ul');
list.style.listStyle = 'none';
list.style.paddingLeft = '10px';
list.style.margin = '5px 0';
uniqueUpdates.forEach(function(page) {
// 处理时间戳:转换为本地时间(年-月-日 时:分)
var date = new Date(page.timestamp);
var timeStr = date.toLocaleString('zh-CN', {
month: '2-digit', // 月份(2位)
day: '2-digit', // 日期(2位)
hour: '2-digit', // 小时(2位)
minute: '2-digit', // 分钟(2位)
second: '2-digit', // 新增:显示秒(2位)
hour12: false // 强制24小时制(避免上午/下午)
}).replace(',', ''); // 移除可能的逗号分隔符
var listItem = document.createElement('li');
listItem.style.margin = '3px 0'; // 每条间距
var link = document.createElement('a');
link.href = mw.util.getUrl(page.title);
link.textContent = page.title;
link.style.color = '#0645ad';
// 时间显示(灰色小字)
var timeSpan = document.createElement('span');
timeSpan.textContent = ' (' + timeStr + ')';
timeSpan.style.color = '#666'; // 灰色
timeSpan.style.fontSize = '0.8em'; // 小字
timeSpan.style.marginLeft = '5px';
listItem.appendChild(link);
listItem.appendChild(timeSpan);
list.appendChild(listItem);
});
targetItem.appendChild(list);
})
.catch(function(error) {
console.error('加载失败:', error);
targetItem.innerHTML = '最近更新:<br>加载失败';
});
}, 1000);