“MediaWiki:Common.js”的版本间差异
跳转到导航
跳转到搜索
| 第1行: | 第1行: | ||
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | ||
| − | // | + | // 显示最近更新的页面列表 |
setTimeout(function() { | setTimeout(function() { | ||
| − | console.log(' | + | console.log('开始加载最近更新列表'); |
| − | // | + | // 1. 定位侧边栏中的“最近更新”容器 |
var sidebar = document.getElementById('mw-panel'); | var sidebar = document.getElementById('mw-panel'); | ||
if (!sidebar) { | if (!sidebar) { | ||
| − | console.log(' | + | console.log('未找到侧边栏'); |
return; | return; | ||
} | } | ||
| − | + | var targetItem = null; | |
var items = sidebar.getElementsByTagName('li'); | var items = sidebar.getElementsByTagName('li'); | ||
| − | |||
| − | |||
| − | |||
for (var i = 0; i < items.length; i++) { | for (var i = 0; i < items.length; i++) { | ||
| − | + | // 改回匹配“最近更新:”) | |
| − | + | if (items[i].textContent.includes('最近更新:')) { | |
| − | + | targetItem = items[i]; | |
| − | + | break; | |
| − | |||
| − | items[i] | ||
| − | |||
} | } | ||
} | } | ||
| − | // | + | if (!targetItem) { |
| − | console.log(' | + | console.log('未找到目标容器'); |
| − | }, 500); // | + | return; |
| + | } | ||
| + | |||
| + | // 2. 清空容器,显示“加载中...” | ||
| + | targetItem.textContent = ''; // 清空原有内容 | ||
| + | targetItem.innerHTML = '最近更新:<br>加载中...'; // 临时显示加载状态 | ||
| + | |||
| + | // 3. 调用MediaWiki API获取最近更新 | ||
| + | var apiUrl = mw.util.wikiScript('api') + '?'; | ||
| + | apiUrl += 'action=query'; | ||
| + | apiUrl += '&list=recentchanges'; | ||
| + | apiUrl += '&rcprop=title'; // 只获取页面标题 | ||
| + | apiUrl += '&rclimit=5'; // 显示5条 | ||
| + | apiUrl += '&rcdaylimit=30'; // 30天内的更新 | ||
| + | apiUrl += '&format=json'; | ||
| + | |||
| + | // 4. 发送请求并处理数据 | ||
| + | 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; | ||
| + | } | ||
| + | |||
| + | // 5. 生成链接列表并插入容器 | ||
| + | var list = document.createElement('ul'); | ||
| + | list.style.listStyle = 'none'; // 去除默认列表样式 | ||
| + | list.style.paddingLeft = '10px'; // 缩进一点更美观 | ||
| + | list.style.margin = '5px 0'; // 调整间距 | ||
| + | |||
| + | for (var i = 0; i < data.query.recentchanges.length; i++) { | ||
| + | var page = data.query.recentchanges[i]; | ||
| + | var listItem = document.createElement('li'); | ||
| + | var link = document.createElement('a'); | ||
| + | |||
| + | // 设置链接地址和文字(标题) | ||
| + | link.href = mw.util.getUrl(page.title); // 生成正确的页面链接 | ||
| + | link.textContent = page.title; | ||
| + | link.style.color = '#0645ad'; // 用MediaWiki默认链接蓝色(可选) | ||
| + | |||
| + | listItem.appendChild(link); | ||
| + | list.appendChild(listItem); | ||
| + | } | ||
| + | |||
| + | targetItem.appendChild(list); | ||
| + | console.log('最近更新列表加载完成'); | ||
| + | }) | ||
| + | .catch(function(error) { | ||
| + | console.error('加载失败:', error); | ||
| + | targetItem.innerHTML = '最近更新:<br>加载失败'; | ||
| + | }); | ||
| + | |||
| + | }, 500); // 延迟500毫秒,确保DOM加载完成 | ||
2025年10月8日 (三) 18:13:39的版本
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
// 显示最近更新的页面列表
setTimeout(function() {
console.log('开始加载最近更新列表');
// 1. 定位侧边栏中的“最近更新”容器
var sidebar = document.getElementById('mw-panel');
if (!sidebar) {
console.log('未找到侧边栏');
return;
}
var targetItem = null;
var items = sidebar.getElementsByTagName('li');
for (var i = 0; i < items.length; i++) {
// 改回匹配“最近更新:”)
if (items[i].textContent.includes('最近更新:')) {
targetItem = items[i];
break;
}
}
if (!targetItem) {
console.log('未找到目标容器');
return;
}
// 2. 清空容器,显示“加载中...”
targetItem.textContent = ''; // 清空原有内容
targetItem.innerHTML = '最近更新:<br>加载中...'; // 临时显示加载状态
// 3. 调用MediaWiki API获取最近更新
var apiUrl = mw.util.wikiScript('api') + '?';
apiUrl += 'action=query';
apiUrl += '&list=recentchanges';
apiUrl += '&rcprop=title'; // 只获取页面标题
apiUrl += '&rclimit=5'; // 显示5条
apiUrl += '&rcdaylimit=30'; // 30天内的更新
apiUrl += '&format=json';
// 4. 发送请求并处理数据
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;
}
// 5. 生成链接列表并插入容器
var list = document.createElement('ul');
list.style.listStyle = 'none'; // 去除默认列表样式
list.style.paddingLeft = '10px'; // 缩进一点更美观
list.style.margin = '5px 0'; // 调整间距
for (var i = 0; i < data.query.recentchanges.length; i++) {
var page = data.query.recentchanges[i];
var listItem = document.createElement('li');
var link = document.createElement('a');
// 设置链接地址和文字(标题)
link.href = mw.util.getUrl(page.title); // 生成正确的页面链接
link.textContent = page.title;
link.style.color = '#0645ad'; // 用MediaWiki默认链接蓝色(可选)
listItem.appendChild(link);
list.appendChild(listItem);
}
targetItem.appendChild(list);
console.log('最近更新列表加载完成');
})
.catch(function(error) {
console.error('加载失败:', error);
targetItem.innerHTML = '最近更新:<br>加载失败';
});
}, 500); // 延迟500毫秒,确保DOM加载完成