「MediaWiki:Common.js」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
(005) |
||
| 1行目: | 1行目: | ||
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */ | /* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */ | ||
| 5行目: | 6行目: | ||
/* ============================================================ | /* ============================================================ | ||
メインページに「最近の更新(7件)」を表示するスクリプト | メインページに「最近の更新(7件)」を表示するスクリプト | ||
- | - タイトルのみ(差分リンクなし) | ||
- localStorage による5分キャッシュ | - localStorage による5分キャッシュ | ||
- API の maxage/smaxage による HTTP キャッシュ | - API の maxage/smaxage による HTTP キャッシュ | ||
| 54行目: | 55行目: | ||
data.query.recentchanges.forEach(function (rc) { | data.query.recentchanges.forEach(function (rc) { | ||
// ▼ リスト項目の HTML(差分リンクなし) | |||
// ▼ リスト項目の | |||
html += | html += | ||
'<li>' + | '<li>' + | ||
'<a href="/wiki/' + rc.title + '">' + rc.title + '</a>' + | '<a href="/wiki/' + rc.title + '">' + rc.title + '</a>' + | ||
' ' + | ' ' + | ||
'(' + rc.timestamp + ')' + | '(' + rc.timestamp + ')' + | ||
2026年2月20日 (金) 13:02時点における版
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */
/* ============================================================
メインページに「最近の更新(7件)」を表示するスクリプト
- タイトルのみ(差分リンクなし)
- localStorage による5分キャッシュ
- API の maxage/smaxage による HTTP キャッシュ
- MediaWiki 1.39.3 で動作確認済み(ES5対応版)
============================================================ */
$(function () {
// ▼ メインページ名の判定(あなたの wiki は「メインページ」)
var page = mw.config.get('wgPageName');
if (page !== 'メインページ' && page !== 'Main_Page') {
return; // メインページ以外では実行しない
}
// ▼ localStorage 用のキー
var key = 'recentchanges-cache';
var keyTime = key + '-time';
// ▼ キャッシュの有効期限(ミリ秒)→ 5分
var ttl = 5 * 60 * 1000;
var now = Date.now();
// ▼ localStorage にキャッシュがあれば利用
var cached = localStorage.getItem(key);
var cachedTime = localStorage.getItem(keyTime);
if (cached && cachedTime && now - cachedTime < ttl) {
$('#recentchanges-container').html(cached);
return; // API を叩かず終了
}
// ▼ MediaWiki API を呼び出して最近の更新を取得
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
list: 'recentchanges',
rclimit: 7, // 取得件数
rcprop: 'title|timestamp|ids', // タイトル・時刻・差分ID
rcshow: '!bot', // Bot 編集を除外(不要なら削除)
format: 'json',
// ▼ HTTP キャッシュ(ブラウザ・CDN)
maxage: 300, // ブラウザキャッシュ 5分
smaxage: 300 // CDNキャッシュ 5分
}, function (data) {
var html = '<ul>';
data.query.recentchanges.forEach(function (rc) {
// ▼ リスト項目の HTML(差分リンクなし)
html +=
'<li>' +
'<a href="/wiki/' + rc.title + '">' + rc.title + '</a>' +
' ' +
'(' + rc.timestamp + ')' +
'</li>';
});
html += '</ul>';
// ▼ localStorage にキャッシュ保存
localStorage.setItem(key, html);
localStorage.setItem(keyTime, now);
// ▼ メインページに表示
$('#recentchanges-container').html(html);
});
});